タグ付けされた質問 「yarv」

2
RubyでRegexpオブジェクトが「偽物」と見なされるのはなぜですか?
Rubyには「真実性」と「虚偽性」という普遍的な考え方があります。 Rubyには、ブールオブジェクト用に2つの特定のクラスがTrueClassありFalseClass、シングルトンインスタンスはそれぞれ特殊変数trueとfalseで示されます。 ただし、真実性と偽造性はこれら2つのクラスのインスタンスに限定されず、概念は普遍的であり、Rubyのすべてのオブジェクトに適用されます。すべてのオブジェクトは真実か偽物です。ルールは非常に簡単です。特に、2つのオブジェクトだけが偽物です: nilシングルトンインスタンスNilClassと false、のシングルトンインスタンス FalseClass 他のすべてのオブジェクトは真実です。これには、他のプログラミング言語で偽物と見なされるオブジェクトも含まれます。 、Integer 0 、Float 0.0 空、String '' 空、Array [] 空、Hash {} これらのルールは言語に組み込まれており、ユーザーが定義することはできません。to_bool暗黙的な変換やそれに類似したものはありません。 ISO Ruby言語仕様からの引用は次のとおりです。 6.6ブール値 オブジェクトは、真実のオブジェクトまたは偽のオブジェクトに分類されます。 falseとnilのみが偽りのオブジェクトです。falseは、false式が評価されるクラスのインスタンスFalseClass(15.2.6を参照)のみです(11.5.4.8.3を参照)。nilは、クラスの唯一のインスタンス(15.2.4を参照)であり、nil式が評価されます(11.5.4.8.2を参照)。NilClass falseおよびnil以外のオブジェクトは、trueishオブジェクトに分類されます。trueは、true式が評価されるクラスの唯一のインスタンスTrueClass(15.2.5を参照)です(11.5.4.8.3を参照)。 実行可能なRuby / Specは同意するようです: it "considers a non-nil and non-boolean object in expression result as true" do if mock('x') 123 else 456 end.should == 123 end これらの2つの情報源によると、私はRegexpsも真実であると想定していますが、私のテストによると、そうではありません。 …
16 regex  ruby  boolean  jruby  yarv 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.