foo = true if !defined? foo || foo.nil? => nil ruby-1.9.2-p0-6ren">
gpt4 book ai didi

Ruby 的 "foo = true if !defined? foo || foo.nil?"不会工作

转载 作者:太空宇宙 更新时间:2023-11-03 18:31:17 25 4
gpt4 key购买 nike

我认为在下面,foo 应该是真的

$ irb

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

ruby-1.9.2-p0 > foo
=> nil

因为 foo 一开始没有定义,但是 foo = true 部分让它暂时有一个 nil 值,所以 !defined 没有捕捉到它,但是foo.nil? 应该捕获它,并使它成为 true...但为什么它仍然是 nil?

这与 Ruby's "foo = true if !defined? foo" won't work as expected 有关

最佳答案

跳过括号时要小心。你的意思是:

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

根据你的其他问题,defined?(foo) 将始终为 true,所以你真的想写:

foo = true if foo.nil?

关于Ruby 的 "foo = true if !defined? foo || foo.nil?"不会工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3775432/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com