瞎扯淡 ruby-2.2.0 的 circular argument reference

hw676018683 · 2015年01月24日 · 最后由 luikore 回复于 2015年01月24日 · 2122 次阅读

在部署的时候,手残的选择了 ruby-2.2,结果因为 2.2 的circular argument reference,几乎花了一天的时间,才发现这个。 得出结论:最新的东西不一定都是好东西。。。

明明是旧东西的问题... 换到一般代码中想:

def foo
  "abc"
end
foo = foo # 这明显应该是 nil 啊
2 楼 已删除

#1 楼 @luikore 我不知道这里为什么为 nil,但是在<2.2 中

def foo
   "abc"
end
def xx( foo = foo )
   p foo
end

xx => “abc”

#3 楼 @hw676018683 这样写不就行了么?

def xx foo=foo()
end

<2.2 中才是错的:

def foo
   "abc"
end
def xx( foo = foo )
   p foo
end

foo = foo
p foo # nil
xx # "abc" ? WTF?

再者把参数名和值写成一样的代码本身就挺有问题,参数中写 foo = foo 应该直接报语法错误才对...

需要 登录 后方可回复, 如果你还没有账号请 注册新账号