2017-07-28 3 views
3

私はRubyで奇妙な動作は以下があります:すべての作品のように、私は標準ifで同じことを行う場合は、他の側からはなぜ接尾辞 `Rubyでif`はとても奇妙な仕事

var1.zero? if var1 = 1 

NameError : undefined local variable or method var1 for main:Object

を予想:

if var1 = 1 
    var1.zero? 
end 
# => false 

誰もがどのように仕事のpostfix if Rubyで記述することができますか?

+1

を応答することができますか –

+1

'if var1 = 1; ..; end 'は 'trueの場合と同じです。 ...;終わり。 –

+0

いいえ、まさに 'var1 == 1'ではなく' var1 = 1'を意味します。 – user3240646

答えて

0

それは

if var1 = 1 
    var1.zero? 
end 

var1 = 1、まずそれがvar1

NameError: undefined local variable or method `var1' for main:Object

そして、ここを取得する理由ですそのvar1.zero?を読み、if var1 = 1

var1.zero? if var1 = 1 

なり、左から右へ移動します値1のvar1を作成し、そのようなエラーを投げることはありません。その実行時にvar1.zero?

+0

一般的に、Rubyは怠惰です。さらに、「読む」という意味は何ですか?私は「eval」を知っていますが、評価と非評価を同時にどのようにしていますか?あなたは通訳の仕方を知っていましたか?この時点からこの行動を説明できますか?私はこれについて本当に感謝しています。 – user3240646

4

私は

Isn't my daughter cute, this is her [showing picture]?


しかし、私ならばだった私の最初の文を終えることができました前ので、私はあなたに

Isn't my daughter cute...

を頼む場合は

You have a daughter?

で私を中断しますあなたにお尋ねください

[showing picture] This is my daughter, isn't she cute?

あなたは簡単にあなたが `VAR1 == 1 'を意味していますか?

No

関連する問題