9

なぜ

[].all?{|a| a.include?('_')} 

戻るtrue

4

4 に答える 4

10

あなたのコードは、次のステートメントの真偽について尋ねaます。空のリストには要素がないため、ステートメントは true です。(これは論理的に空虚な真実と呼ばれます。)代わりにその式を偽にする方法を見つけようとすると理解しやすいかもしれません。これには、 を含まない空のリストに少なくとも 1 つの要素が必要です。ただし、空のリストは空であるため、そのような要素は存在できません。したがって、ステートメントが意味のある偽になることはあり得ないため、真でなければなりません。a'_''_'

于 2010-11-02T05:40:03.340 に答える
7

all?配列のすべての要素をブロックに渡し、ブロックが{|a| a.include?('_')}返されtrueない場合、falseまたはnilいずれかの要素に対して返されます。配列には要素がないため、ブロックはfalseornilを返さず、 so をall?返しますtrue

于 2010-11-02T05:37:38.503 に答える
2

all?ブロックが false または nil を返さない場合は true を返します。ブロックは呼び出されないため、false または nil を返すことはなく、したがってall?true を返します。

于 2010-11-02T05:38:17.230 に答える
1

[].all?{ false }

truebcat の回答で説明されている理由により、 を返します。

于 2010-11-02T22:41:44.137 に答える