ブール値への自動変換を実現するために、Rubyオブジェクトにいくつかのメソッドを追加できますか?例えば。 if obj == true
Rubyオブジェクトをブール型に暗黙的に変換する方法
答えて
==
、あなたはそのtruthyness値に基づいてブール値にオブジェクトを変換したいならば、あなたは二重否定を使用することができ、言っ
は:==
メソッドの構文糖です。その後、
class SomeClass
def ==(val)
# specyfy the comparision behaviour
end
end
そして、それが好き使用します:
sc = SomeClass.new
sc == true
=> true # or false, depending on :== method's implementation
あなたは比較ですの結果が
true
とするとき
false
あるべきときに、内部のオブジェクトの状態に基づいて、指定することができ、オブジェクト自身の
:==
方法を定義することができます
'to_bool'メソッドを使うこともできます。 – azrael
ほとんどの場合、オブジェクトを明示的にブール値に変換するのではなく、真実性をチェックします。これは、ちょうどRubyで
if obj
# here, obj is truethy
else
# here, object is falsey
end
、唯一false
とnil
falseyのように定義されているを書くあなたの何が起こるかです。他のすべてのオブジェクトはtruethyです。上記のような条件で使用できます。このため、true
またはfalse
の明示的なチェックは、Rubyではかなりまれです。すなわち
obj_truthyness = !!obj
# => true or false
ありがとうございますが、私は暗黙的にnilではないオブジェクトを変換したいです。ブール値はオブジェクトの内部状態によって異なり、明示的な変換はできません(SASSのため)。 – azrael
私はあなたが達成したいことを理解していません。元の質問を編集して、(1)実際に何を達成したいのか、(2)これを使用すべき場所、(3)必要がある理由を説明するために詳細を追加してください。 –
- 1. Qtオブジェクトを暗黙的にQStringに変換する方法は?
- 2. 暗黙的に異なる型間で型変換を行う
- 3. DateTimeから暗黙的に暗黙的に暗黙的に暗黙的に暗黙的に暗黙的に暗黙的に暗黙変換に変換することができません
- 4. Json.NET:シリアル化する前に暗黙的にオブジェクトを変換する方法は?
- 5. 暗黙的に変換するときに暗黙のany2stringaddシンボル
- 6. nilをString-rubyに暗黙的に変換しない
- 7. "String"型を "Windows.Security.Credentials.PasswordCredential"に暗黙的に変換できません
- 8. 暗黙的に 'float型'を 'int'に変換できません
- 9. 'System.Collections.Generic.IEnumerable'型を 'System.Web.Mvc.ActionResult'に暗黙的に変換できません。
- 10. 'string'型を暗黙的に 'string []'に変換できません
- 11. 'System.ValueType'型を暗黙的に 'int?'に変換できません。
- 12. は高次の型を暗黙的に変換します
- 13. 暗黙的に暗黙的に符号なしタイプに変換される
- 14. bool型を暗黙的に変換できませんか?
- 15. 暗黙的に型 'int?'を変換できません。 to int '
- 16. C#:暗黙的に型を変換できません
- 17. は、暗黙的に型「無効」から「ブール」
- 18. が暗黙的に型「System.Collections.Generic.HashSet」
- 19. Scala - 型のOption [型]への暗黙的変換
- 20. 暗黙的に「文字列」に型「int型」を変換できません
- 21. IConvertible Vs.暗黙的/明示的な演算子型変換?
- 22. 整数を暗黙的に倍精度に変換する方法は?
- 23. Scala:抽象型の間で暗黙的に変換する型安全な方法
- 24. Scalaコレクション型間の暗黙の変換
- 25. 暗黙の型変換 - mvcアプリケーション
- 26. Cでの暗黙の型変換
- 27. 配列への暗黙の型変換
- 28. Ruby、シンボルの整数への暗黙的変換なし
- 29. は、void型をオブジェクトに暗黙的に変換することはできません。 .NET MVCするPartialViewResult
- 30. JSONはRubyの文字列をIntegerに暗黙的に変換しません。
変換のルールは何ですか?どのオブジェクトを 'true'に変換し、' false'に変換すべきか? – Stefan
通常、これには "ダブルバング"が使われます( '!! obj')。参照してください:http://stackoverflow.com/questions/3994033/ruby-operator-a-k-a-the-double-bang – Bartosz