私は素晴らしいRuby on Rails Tutorialを読んでおり、次のコードが発生しました。Rubyで0をTrueと扱うのはなぜですか?
if 0
true
else
false
end
上記戻りtrue
と多くの言語(Cは明らかな例である)とは異なり、Rubyはtrue
として0
を処理する方法を示します。私は、この行動を特有のものとして却下するのではなく、この重要な慣習から出発するのには正当な理由があると考えています。たとえば、Pythonでは、0
をFalse
として扱います。
要するに、0
をtrue
として扱うためのルビを設計する根拠は何ですか?
私はPythonからルビに来ているので、特に興味深いのは、あなたが名前を付けた( '[]'、 '{}'、 '' "')のすべての例がPythonでは 'false'だということです。私の見解では、これはルビーの奇妙さを高めるだけです。 – enocom
Ruby、Perl、JavaScript、Lua(など)を知った後にPythonを学ぶ人々は、それらの値が真実ではないことを気に入っていると確信しています。 – maerics
0、[]、{}、および ""は偽ではないので、Railsは#blank ?, #present ?, #empty?を導入しました。これは、Rubyのコードの原則よりもコードを大きくします。 – allenhwkim