Ruby
 Computer >> コンピューター >  >> プログラミング >> Ruby

Rubyのブール値を理解する

ブール値とは何ですか?

ブール値は、論理ステートメントで使用される値であり、何かが真または偽と見なされるかどうかを示します。

これは意思決定に使用できます

Rubyにはブールクラスはありませんが、ブールオブジェクトがあります!

trueがあります &false

TrueClassのシングルトンオブジェクトはどれですか &FalseClass

次のようなメソッドを使用するとブール値が得られます

  • empty?
  • all?
  • match?

等号で物事を比較

1 == 1

# true

==であることに注意してください Rubyでもメソッドです。これは、このメソッドの実装方法に応じて動作が変わる可能性があることを意味します。

真実と偽りの価値観

真実の価値とは何ですか?

これは、trueと見なされる値です ifステートメントのようなブールコンテキストで。

Rubyのすべてが真実ですが、この2つ

  • false
  • nil

これらの2つの値、およびこれら2つだけを、「偽物」と呼びます。

実際のブール値

これは、条件がある場合は…

このように

if bacon
  puts "we got bacon"
end

Rubyはbaconかどうかをチェックします 真実である(false以外のもの / nil )文字列を印刷する前。

言い換えれば

baconでメソッドを呼び出さない場合は、nilをチェックする必要はありません。 。

安全なナビゲーター

オブジェクトのメソッドを呼び出したい場合があります。

このように

if bacon.stock
  # ...
end

baconの場合、エラーが発生します はゼロです。これを回避するには、次のようにします…

if bacon&.stock
  # ...
end

この&. は安全なナビゲーション演算子と呼ばれ、Ruby2.3で導入されました。

ブールメソッド

これらのメソッドが疑問符で終わるのを見たことがありますか?

empty?のように 。

これらを「述語メソッド」と呼び、慣例により、常にtrueのいずれかを返します。 またはfalse

自分で書くことができます

def published?
  # ...
end

def ready?
  # ...
end

これは、コードをRubyのように感じさせる優れたパターンです。

ブールパラメータは良い考えではありません

ブールメソッドについて説明しましたが、これはすばらしいのですが、避けたいのはブールパラメータです。

def bacon(raw)
end

bacon(false)

bacon(false)を見ると このfalseが何であるかわかりません 意味します。

見つけるには、コードを掘り下げる必要があります。

さらに、ブール値は、メソッドが必要以上に複雑になることを意味します。 。

解決策は?

メソッドを2つに分割するか、これが不要な方法でコードを設計します。

ブール論理

TrueClassとFalseClassはいくつかのメソッドを実装しています。

to_sのように、検査します。

しかし、もっと興味深いのは

  • &
  • |
  • ^

これらの奇妙に見える方法は何ですか?

ブール論理。

ブール論理テーブルは次のとおりです

名前 シンボル 真/偽
TRUE / TRUE
そして true false
または | true true
XOR ^ false true

true & true

コードでブール論理を使用しないことがよくありますが、ブール論理はコンピューターの動作の基盤を形成するため、それについて知ることは興味深いことです。

概要

Rubyのブール値について学びました! falseを除いて、すべてが「真実」であることを忘れないでください &nil

より多くの人が見つけられるように、この記事を共有することを忘れないでください🙂

読んでくれてありがとう。


  1. Rubyでの複製とクローン:違いを理解する

    Rubyでオブジェクトをコピーできることをご存知ですか?それだけでなく、これを行うには2つの異なる方法があります! これらの方法は : dup clone すぐに違いを探りますが、最初に… なぜオブジェクトのクローンを作成するのですか? ? Rubyの多くのオブジェクトは変更可能であり、変更することができます。 オブジェクトを変更したいが、元のコピーを保持する場合 その後、クローンを作成できます。 たとえば。 最初の要素を除くすべての要素を含む配列が必要な場合があります。 これを行う1つの方法 : a = [1,2,3,4,5] a[1..-1] # [2,3,4

  2. Ruby Freezeメソッド–オブジェクトの可変性を理解する

    オブジェクトが可変であるとはどういう意味ですか? 派手な言葉で混乱させないでください。「可変性 」は、オブジェクトの内部状態を変更できることを意味します。これは、凍結されたオブジェクトを除く、すべてのオブジェクトのデフォルトです。 、または特別なオブジェクトのリストの一部であるもの。 つまり、Rubyのすべてのオブジェクトが変更可能というわけではありません! 例 : 数字や記号、さらにはtrueには意味がありません またはfalse (オブジェクトでもあります)変更します。 数字の1は常に1になります。 ただし、他のオブジェクト、特に配列オブジェクトやハッシュオブジェクトなどのデー