如果vs如果行的结尾行为不一样呢?

为什么这个代码不工作?
b if b = true

错误:未定义的局部变量或方法`b’

但是这样做:

if b = true
    b
end

他们不应该是一样的吗?

解决方法

这是一个很好的问题.它与Ruby中变量的范围有关.

这是一个post by Matz on the Ruby bug tracker关于这个:

local variable scope determined up to down,left to right. So a local variable first assigned in the condition of if modifier is not effective in the left side if body. It’s a spec.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...