ruby – 为什么这个内联测试不起作用?
发布时间:2020-12-17 02:43:33 所属栏目:百科 来源:网络整理
导读:我有一个内联,如果没有按照我的想法进行操作,为了清晰起见,我已将其提取到控制台示例中. 我认为内联if在语法上与多行if相同,但它看起来并非如此. foo = "chunky"(bar1 = foo) if (!defined?(bar1) foo)bar1 在这种情况下,bar1最终设置为nil.如果我重组它 foo
我有一个内联,如果没有按照我的想法进行操作,为了清晰起见,我已将其提取到控制台示例中.
我认为内联if在语法上与多行if相同,但它看起来并非如此. foo = "chunky" (bar1 = foo) if (!defined?(bar1) && foo) bar1 在这种情况下,bar1最终设置为nil.如果我重组它 foo = "chunky" if !defined?(bar2) && foo bar2 = foo end bar2 然后它工作 – bar2设置为“chunky”(我在第二个例子中使用了bar2而不是bar1,以确保我在每种情况下都使用了未定义的变量). 是不是内联如果总是将bar1设置为某个东西,默认为零?我认为它只是在if之前没有评估部分,如果if测试返回falsy. 解决方法
它失败了,因为只要在赋值的左侧看到一个裸字,它就会被初始化为nil.因此当你做(bar1 = foo)if(!defined?(bar1)&& foo)时,bar1在定义中是否为零?校验.这是一个简化的例子:
>> defined? foo => nil >> foo = 1 if false => nil >> foo => nil >> defined? foo => "local-variable" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |