哪个类/模块是Ruby中的=方法?

时间:2010-08-04 06:42:43

标签: ruby

有没有人知道=方法在Ruby中的哪个类/模块?

我想转换

a = b

a equals b

所以我必须知道它在哪个类/模块中,所以我可以创建一个别名。

感谢。

2 个答案:

答案 0 :(得分:4)

=是赋值运算符。它无法重新定义。

此外,您无法定义新的运算符。正如Jörg所指出的那样,a equals ba(equals(b))或等效self.a(self.equals(b))相同,因此,您需要一个响应:a消息和{{}的对象1}}消息。

答案 1 :(得分:0)

我试图提供一个答案,但看起来Ruby比我更聪明:

# Adults! Don't try this at work. We're what you call "amateurs"
def a=(*args)
  if args.size == 1
    STDERR.puts "Assignment"
    @a = args[0]
  else
    STDERR.puts "Comparison"
    return args[0] == args[1]
  end
end

self.a=([1,2,3])
Assignment
=> [1, 2, 3]

self.a=([1,2,3],[4,5,6])
SyntaxError: (irb):12: syntax error, unexpected ',', expecting ')'
self.a=([1,2,3],[4,5,6])
            ^
        from C:/Ruby19/bin/irb:12:in `<main>'
self.send(:a=, [1,2,3],[4,5,6])
Comparison
=> false