Ruby の真偽値判定
nil と false です。
「Ruby の真偽値判定」はCoddyKit上の無料Ruby Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはRuby Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ruby Academyコースには全4レッスンが含まれています。
truthyとは
条件では、Rubyは厳密なbooleanを要求しません。どの値もtruthyまたはfalsyとして扱われます。このルールを知っておくと、見つけにくいバグを防げます。
if "hello"
puts "Strings are truthy"
endfalsyは2種類だけ
Rubyのルールはとても単純です。falsyなのはfalseとnilだけです。それ以外のすべてはtruthyです。
puts "nil is falsy" unless nil
puts "false is falsy" unless false0はtruthy
多くの言語とは異なり、Rubyでは0はtruthyです。空の文字列や空の配列も同様です。CやPythonの経験がある場合は注意してください。
if 0
puts "0 is truthy in Ruby"
end
if ""
puts "empty string is truthy too"
endnilを知る
nilは値が存在しないことを表します。メソッドは、ハッシュに存在しないキーなど、返すものがない場合にnilを返すことがよくあります。
user = { name: "Ada" }
puts user[:email].inspect # missing key returns nilnilの確認
明示的にテストするにはnil?を使います。nilの場合にだけtrueを返します。
x = nil
y = 0
puts x.nil?
puts y.nil?&&演算子
&&は最初のfalsyなオペランドを返し、すべてがtruthyの場合は最後のオペランドを返します。短絡評価を行うため、左辺がfalsyなら右辺は評価されません。
puts (nil && "never").inspect
puts ("a" && "b").inspect||演算子
||は最初のtruthyなオペランドを返します。そのため、デフォルト値に最適です。
name = nil
display = name || "Guest"
puts display||=による条件付き代入
a ||= bは、aが現在nilまたはfalseの場合にだけ、bをaに代入します。デフォルト値を設定するRubyらしい方法です。
config = {}
config[:timeout] ||= 30
config[:timeout] ||= 99 # already set, ignored
puts config[:timeout]falsyなデフォルト値に注意
falseはfalsyであるため、||を使うと、本来有効なfalseの値を上書きすることがあります。falseに意味がある場合は、代わりにnil?で確認してください。
enabled = false
result = enabled || true # oops, becomes true
puts result
safe = enabled.nil? ? true : enabled
puts safeセーフナビゲーション演算子
&.は、レシーバーがnilでない場合にだけメソッドを呼び出します。レシーバーがnilの場合は、エラーを発生させずにnilを返します。
name = nil
puts name&.upcase.inspect # no NoMethodError
name = "ruby"
puts name&.upcase組み合わせて使う
truthyのルールを使うと、表現力のある簡潔なコードを書けます。ただし、次のような例外には注意してください。
nilとfalseだけがfalsyです。0、""、[]はすべてtruthyです。- 本当の
falseが重要な場合は、nil?を使います。
values = [0, "", [], nil, false]
values.each do |v|
puts "#{v.inspect} => #{v ? "truthy" : "falsy"}"
endクイックチェック
Rubyのtruthyについての理解度を確認します。
まとめ
Rubyのtruthyについて学びました。
nilとfalseだけがfalsyです。nil?はnilかどうかを明示的に確認します。&&と||はオペランドを返し、短絡評価を行います。||=はデフォルト値を設定し、&.はnilのレシーバーに対する呼び出しを安全にします。
username = nil
username ||= "anonymous"
puts "Welcome, #{username}"よくある質問
「Ruby の真偽値判定」レッスンは無料ですか?
はい。「Ruby の真偽値判定」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ruby Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ruby Academyコースには全4レッスンが含まれています。
「Ruby の真偽値判定」で何を学びますか?
nil と false です。 ブラウザで直接実行するハンズオンコードでRuby Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Ruby Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのRuby Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「Ruby の真偽値判定」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このRuby Academyレッスンでコードを書いて実行できますか?
はい。すべてのRuby Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- if、unless、三項演算子
- case/when 式
- Ruby の真偽値判定
- ガード節