因此,在if
条件下初始化变量,然后在if块中使用该变量是很常见的。
if a = foo()
puts a
end
但是,当我初始化一个变量并在同一个if块中使用它时,那个var将不会被认为是初始化的。例如:
def good?(item)
puts "item is #{item.inspect}"
true
end
if b = 52 && good?(b)
puts "b is #{b.inspect}"
end
运行以上操作,结果将是
item is nil
b is true
为什么会这样?什么样的关键字与我搜索和研究它的Ruby行为有关?
答案 0 :(得分:9)
答案 1 :(得分:8)
您正在b
分配52 && good?(b)
的结果。将b
传递给nil
时,good?
仍为def good?(item)
puts "item is #{item.inspect}"
true
end
if (b = 52) && good?(b)
puts "b is #{b.inspect}"
end
。
括号是关键。
item is 52
b is 52
结果:
//= require ember-template-compiler