在部署的时候,手残的选择了 ruby-2.2,结果因为 2.2 的circular argument reference,几乎花了一天的时间,才发现这个。 得出结论:最新的东西不一定都是好东西。。。
明明是旧东西的问题... 换到一般代码中想:
def foo "abc" end foo = foo # 这明显应该是 nil 啊
#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 应该直接报语法错误才对...
foo = foo