有没有人知道=方法在Ruby中的哪个类/模块?
我想转换
a = b
到
a equals b
所以我必须知道它在哪个类/模块中,所以我可以创建一个别名。
感谢。
答案 0 :(得分:4)
=
是赋值运算符。它无法重新定义。
此外,您无法定义新的运算符。正如Jörg所指出的那样,a equals b
与a(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