> so (Any)
False
しかし配列のすべての要素がPerl 6で定義されていることを確認する方法は?
> so [1, Any]
True
それはどのようにFalse
を生成するには?
UPD:これはうまくいくとは思うが、これはうまくいくようだ。すべての
> so [1, Any].all
False
> so (Any)
False
しかし配列のすべての要素がPerl 6で定義されていることを確認する方法は?
> so [1, Any]
True
それはどのようにFalse
を生成するには?
UPD:これはうまくいくとは思うが、これはうまくいくようだ。すべての
> so [1, Any].all
False
真偽チェックではなく定義を行う場合は、say [1, 2, Any].all.defined
を使用して、ジャンクション上で定義されたメソッド呼び出しをオートスレッドします。
say [1, 2, True].all.defined # True
say [1, Int, True].all.defined # False
まず、(Any)
はList
ないが、(Any,)
(カンマに注意してください)です。最初のケースを配列([Any]
のように)にするか、そうしないと、あなたはso
にリスト(この文脈ではArray
またはList
を意味小文字のリスト)を得たとき、それは、リスト内の要素の数がかかります
:-)オレンジとリンゴを比較している。そのように、すべてのリストをTrueを与えます。
あなたの質問に答えるには、それを行う方法はたくさんありますが、すべてリストの少なくとも一部を歩く必要があります。あなたのリストが0
または空の文字列が含まれていないことが確実な場合は、ような単純な何かができる:
say so [&&] (1,Any,3); # False
say so [&&] (1,2,3); # True
[&&]
基本的に言っている:1 && Any && 3
と1 && 2 && 3
。
あなたはそれを確認することができない場合は、追加のステップを行う必要があります:.map
はすでになり、この場合には、あなたが、so
を行う必要がないこと
say [&&] (1,Any,3).map: *.defined; # False
say [&&] (1,0,3).map: *.defined; # True
注意値はTrue
またはFalse
です。私は、読者が何かをより速く行うための練習として、.first
を使って残しています。
ありがとうございます!私は 'so 0 == False'を忘れてしまった。 –
実際、修正されました。ありがとう! –