瞎扯淡 ruby-2.2.0 的 circular argument reference

hw676018683 · January 24, 2015 · Last by luikore replied at January 24, 2015 · 2122 hits

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

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

def foo
  "abc"
end
foo = foo # 这明显应该是 nil 啊
2 Floor has deleted

#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 应该直接报语法错误才对...

You need to Sign in before reply, if you don't have an account, please Sign up first.