ruby – 为什么赋值的值总是参数的值?
发布时间:2020-12-17 02:34:13 所属栏目:百科 来源:网络整理
导读:参见英文答案 Why isn’t `method=` treated the same as any other method?????????????????????????????????????1个 有人会解释为什么在旧版本的Ruby中,赋值的结果是属性设置方法返回的值,但在Ruby 1.8之后,赋值的值始终是参数的值;方法的返回值被丢弃.在
参见英文答案 >
Why isn’t `method=` treated the same as any other method?????????????????????????????????????1个
有人会解释为什么在旧版本的Ruby中,赋值的结果是属性设置方法返回的值,但在Ruby 1.8之后,赋值的值始终是参数的值;方法的返回值被丢弃.在下面的代码中,旧版本的Ruby会将结果设置为99.现在结果将设置为2. class Test def val=(val) @val = val return 99 end end t = Test.new result = (t.val = 2) result # => 2 这种变化背后的原因是什么? 解决方法
当您想要将相同的值分配给多个变量时,将赋值链接在一起的情况并不少见.这在其他语言中更为常见.
@user_id = user.id = next_user_id 但是当你没有考虑这个时会发生什么,所以返回值与输入值不一样? class User def id=(name) @id = name @modified = true end def modified? @modified end end 这段代码完全没问题,直到有一天你把它放在如上所述的赋值链中,突然间你会得到意想不到的结果. 因此,解释器执行某种伏都教并确保赋值的RHS是返回值,丢弃实际的返回值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |