6

私はブール要素のリストを持っています:

  def list=[true,false,true,true]

次のような方法が存在するかどうかを尋ねます。

  list.joinBoolean('&&')

< 偽

なぜなら: true && false && true && true=false

list.joinBoolean('||')

<真

理由:真|| || 偽 || || 真 || 真=真

存在しない場合、期待される結果を得るためにループを実行する方法を知っています。

  boolean tmp=true;
  list.each{e->
     tmp=tmp && e;    
  }
   return tmp;

また

  boolean tmp=false;
  list.each{e->
     tmp=tmp || e;    
  }
   return tmp;
4

3 に答える 3

4

または:

list.inject { a, b -> a && b }
list.inject { a, b -> a || b }

list空にできる場合は、次の長い注入形式を使用する必要があります。

list.inject(false) { a, b -> a && b }
list.inject(false) { a, b -> a || b }

または、以下のanyおよびeveryメソッドを使用します


ところで

他の回答で言及されている関数anyと関数は次のように機能します。every

list.any()
list.every()

または (長い形式)

list.any { it == true }
list.every { it == true }
于 2013-08-22T12:45:34.393 に答える
4

anyメソッドはここでevery便利です

于 2013-08-22T12:43:06.603 に答える
1

いいえ、そのような方法はありません。ただし、ループするたびに実行する必要はありません。

def list=[true,false,true,true]
list.any{it==true} // will work as list.joinBoolean('||')
list.every{it==true} // will work as list.joinBoolean('&&')
于 2013-08-22T12:44:45.957 に答える