2016-07-25 4 views
0

の結果を返します:グルーヴィーで「任意の」機能を使用して、常に私は、次のような何かをしようとしている最後の項目閉鎖

"""foo 
bar""".eachLine { line -> 
    ['foo', 'baz'].any{ 
     println(it + ' - ' + line) 
     line == it 
    } 
} 

結果は次のとおりです。

foo - foo 
foo - bar 
baz - bar 
false 

私がテストしたいと思います

"""foo 
bar""" 

複数行の文字列の行のいずれかの場合、アレイ['foo', 'baz']で存在します。

ただし、文字列にfooが存在する場合はfalseイベントを返します。

私は間違っていますか?

答えて

1

試してみてください。

"""foo 
bar""".split('\\n').any { line -> ['foo', 'baz'].contains(line)} 
+0

まさに私が必要としたもの。ありがとう。 –

0

あなたがこれを行うことが一つの方法:

def multiLine = ("""foo 
bar""") 
List lines = multiLine.split("\n") as List 
def lookingFor = ['foo','baz'] 

if (lookingFor.intersect(lines).size() > 0) { 
     println "true" 
     return true 
} 
+0

しかし、私は、単一のブール値の結果を必要と私は、これは「任意の」は行うことができますように一度だけ戻りませんね。 println文はデバッグのためだけにここにあります。私が実際に必要とするのは、天気を知ることです。あるいは、複数行の文字列のいずれかが文字列配列に存在しないことを知ることです。任意のヒント ?なぜ私の "any"関数がtrueを返していないので、クロージャが真に等しいときに初めて停止しますか? –

+0

anyを使用している場合は、anyを介して複数行の各行を実行しているので、実際にはそうであるかもしれませんが、最後の行は返される値です。状態変数を設定していないか、最初の一致が見つかったときに戻り値を返した場合を除きます。 –

関連する問題