2010-09-23 56 views
1

我下面想,富應該是真實的Ruby的「foo = true if!defined?foo || foo.nil?」將無法正常工作

$ irb 

ruby-1.9.2-p0 > foo = true if !defined? foo || foo.nil? 
=> nil 

ruby-1.9.2-p0 > foo 
=> nil 

因爲富起初沒有定義,但foo = true部分使其暫時具有零值,所以!defined沒趕上它,但foo.nil?應該趕上它,並使其成爲現實...但爲什麼它仍然是零?

這是關係到Ruby's "foo = true if !defined? foo" won't work as expected

回答

3

跳過括號時要小心。您的意思是:

foo = true if !defined?(foo) || foo.nil? 

根據你的其他問題,defined?(foo)永遠是true,所以真的是你想要寫:

foo = true if foo.nil? 
相關問題