在Ruby中,如果我们定义"c =(foo)"并且返回foo + 1,为什么不将这个赋值给d =(self.c = 3)?

nop*_*ole 4 ruby

代码是

def c=(foo)
  p "hello"
  return foo + 1
end

p self.c = 3
d = (self.c = 3)
p d
Run Code Online (Sandbox Code Playgroud)

它只打印出3 ...换句话说,返回的值4没有分配给d,为什么?

Chu*_*uck 7

Setters返回他们的参数(或右操作数,取决于你如何看待它) - 总是.

  • 那就是:如果你使用setter语法调用它们.如果你使用`send`来调用它们,它们会返回它们的实际返回值. (3认同)