fc2ブログ

2023.08 «  - - - - - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 » 2023.10
TOP > false と nil だけが偽だそうで

 ← フラグメントはURIの後に | TOP | 携帯各キャリアの istyle メモ

false と nil だけが偽だそうで 

2008年07月05日 ()
Ruby レファレンスに

Ruby では false または nil だけが偽で、それ以外は 0 や空文字列も含め全て真です



とありましたが、これはなまじ他のプログラミング言語を知っていると陥りやすい落とし穴ですね。0 や 0.0 や 1 や -1 や ''(空文字列) も true と同じ扱いですものね。

特に 0 や ''(空文字列) が気をつけていないとハマリそうです。

例でみれば一目瞭然

puts '真' if true # => '真'
puts '真' if 0   # => '真'
puts '真' if ''  # => '真'
puts '真' if 0.0  # => '真'
puts '真' if 1   # => '真'
puts '真' if -1  # => '真'

puts '真' if false # =>
puts '真' if nil  # =>



【広告】

[2008.07.05(Sat) 12:33] Rubyの文法Trackback(0) | Comments(2)
↑TOPへ


COMMENT

参考までに… by tsumuji
Lisp 属の Scheme では "#f" のみが「偽」で、それ以外はすべて「真」になります。確か、Common Lisp でも "nil" 以外は「真」になるんじゃなかったかな?

Ruby のことを "Matz Lisp" と呼ぶ人がいるくらいだから、Ruby はかなり Lisp の影響を受けて入ると思いますよ。

私は C → Ruby → Scheme の順に学習したんですが、C しか知らなかった頃と Scheme を知ってからでは Ruby の印象がガラリと変わりました。

へぇ参考になります by 自分
確かにいろんな言語を知っていくと、前に覚えた言語の印象が変わるときがありますね。リアル言語でもそうですね、例えば英語→フランス語、みたいな流れですと、うわーフランス語って男の名詞と女の名詞があるのかー、その分英語の名詞は男と女の区別がなくて楽だなー、とか。

Ruby を知る前は、nil といったらとにかく Lisp みたいな印象を強く持っていましたので、私も Ruby はモロ Lisp の要素を取り入れているのかなあ、と思っていました。

Ruby をやっていて、lambda というキーワードが出てきたときもあれどこかで昔聞いたことがあるような、と思っていたら Lisp で使ったことがあるキーワードだったのを思い出しましたし。

ところで、Ruby がここまで広まった大きな要因の 1 つとして Ruby On Rails のことを Matz さんは挙げられていましたけど、Lisp でも Lisp On Rails みたいなことは全然可能でありましょう、ともおっしゃっていました。

長い間あまり表舞台に立っていないように思えます Lisp ですが (Emacsぐらい?)、しかし消えることもなく残っているところを考えると、とてつもないポテンシャルを持っている言語で、マーケティングや時代の流れ次第では大化けするかもしれませんね。

コメントを閉じる▲
 ← フラグメントはURIの後に | TOP | 携帯各キャリアの istyle メモ

COMMENT

Lisp 属の Scheme では "#f" のみが「偽」で、それ以外はすべて「真」になります。確か、Common Lisp でも "nil" 以外は「真」になるんじゃなかったかな?

Ruby のことを "Matz Lisp" と呼ぶ人がいるくらいだから、Ruby はかなり Lisp の影響を受けて入ると思いますよ。

私は C → Ruby → Scheme の順に学習したんですが、C しか知らなかった頃と Scheme を知ってからでは Ruby の印象がガラリと変わりました。
[ 2008.07.06(Sun) 07:25] URL | tsumuji #yAs5u9kg | EDIT |

確かにいろんな言語を知っていくと、前に覚えた言語の印象が変わるときがありますね。リアル言語でもそうですね、例えば英語→フランス語、みたいな流れですと、うわーフランス語って男の名詞と女の名詞があるのかー、その分英語の名詞は男と女の区別がなくて楽だなー、とか。

Ruby を知る前は、nil といったらとにかく Lisp みたいな印象を強く持っていましたので、私も Ruby はモロ Lisp の要素を取り入れているのかなあ、と思っていました。

Ruby をやっていて、lambda というキーワードが出てきたときもあれどこかで昔聞いたことがあるような、と思っていたら Lisp で使ったことがあるキーワードだったのを思い出しましたし。

ところで、Ruby がここまで広まった大きな要因の 1 つとして Ruby On Rails のことを Matz さんは挙げられていましたけど、Lisp でも Lisp On Rails みたいなことは全然可能でありましょう、ともおっしゃっていました。

長い間あまり表舞台に立っていないように思えます Lisp ですが (Emacsぐらい?)、しかし消えることもなく残っているところを考えると、とてつもないポテンシャルを持っている言語で、マーケティングや時代の流れ次第では大化けするかもしれませんね。
[ 2008.07.06(Sun) 21:55] URL | 自分 #RaJW5m0Q | EDIT |

COMMENT POST















管理者にだけ表示

 ← フラグメントはURIの後に | TOP | 携帯各キャリアの istyle メモ