0Pricing
Ruby Academy · レッスン

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"
end

falsyは2種類だけ

Rubyのルールはとても単純です。falsyなのはfalseとnilだけです。それ以外のすべてはtruthyです。

puts "nil is falsy" unless nil
puts "false is falsy" unless false

0はtruthy

多くの言語とは異なり、Rubyでは0はtruthyです。空の文字列や空の配列も同様です。CやPythonの経験がある場合は注意してください。

if 0
  puts "0 is truthy in Ruby"
end
if ""
  puts "empty string is truthy too"
end

nilを知る

nilは値が存在しないことを表します。メソッドは、ハッシュに存在しないキーなど、返すものがない場合にnilを返すことがよくあります。

user = { name: "Ada" }
puts user[:email].inspect  # missing key returns nil

nilの確認

明示的にテストするには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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. if、unless、三項演算子
  2. case/when 式
  3. Ruby の真偽値判定
  4. ガード節
← Ruby Academyに戻る