代码之家  ›  专栏  ›  技术社区  ›  Ulysse BN

ruby equal方法总是返回参数值,而不是返回值[duplicate]

  •  -1
  • Ulysse BN  · 技术社区  · 6 年前

    #bar= 不会是我隐含的回报,而是 value 参数

    class Foo
      def bar=(value)
        @bar = "these not the droids you are looking for"
      end
    
      def bar
        @bar
      end
    end
    
    foo = Foo.new
    puts foo.bar = 42 # 42
    puts foo.bar # "these not the droids you are looking for"
    

    我想打印我的最后一行 "these not the droids you are looking for" 42 . 可能吗?

    1 回复  |  直到 6 年前
        1
  •  3
  •   Sergio Tulentsev    6 年前

    可能吗?

    不,这就是赋值运算符在ruby中的处理方式。你可以从 bar= set_bar . 这现在只是一个普通方法,不会在赋值操作中忽略它的返回值(因为它不能在那里使用)。

    或者你可以做类似的事情 foo.send("bar=", 42) ,但请不要。