Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby中的=方法在哪个类/模块中?_Ruby - Fatal编程技术网

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

Ruby中的=方法在哪个类/模块中?,ruby,Ruby,有人知道=方法在Ruby中属于哪个类/模块吗 我想皈依 a = b 进入 所以我必须知道它在哪个类/模块中,这样我才能生成别名 谢谢。The=是赋值运算符。它不能被重新定义 此外,您不能定义新的运算符。正如Jörg所指出的,a equals b与aequalsb相同,或者等同于self.aself.equalsb,因此,您需要一个同时响应:a消息和:equals消息的对象。the=是赋值运算符。它不能被重新定义 此外,您不能定义新的运算符。正如Jörg所指出的,a equals b与Aequa

有人知道=方法在Ruby中属于哪个类/模块吗

我想皈依

a = b
进入

所以我必须知道它在哪个类/模块中,这样我才能生成别名

谢谢。

The=是赋值运算符。它不能被重新定义

此外,您不能定义新的运算符。正如Jörg所指出的,a equals b与aequalsb相同,或者等同于self.aself.equalsb,因此,您需要一个同时响应:a消息和:equals消息的对象。

the=是赋值运算符。它不能被重新定义


此外,您不能定义新的运算符。正如Jörg所指出的,a equals b与Aequals b或等效的self.aself.equals b相同,因此,您需要一个对象来响应:a消息和:equals消息。

我试图提供一个答案,但看起来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

我试图提供一个答案,但看起来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

有没有办法使a等于b作为合成糖?只是为了学习的目的,即使它不是最好的练习,等于b等于A等于A等于b等于A等于A等于b等于A等于A等于b等于A等于A等于b等于A等于A等于b等于A等于A等于b等于A等于b等于A等于b等于A等于b等于A等于A等于b等于A等于A等于b等于A等于b等于b。因此,您需要一个对象,该对象同时响应:a消息和:equals消息,并且您需要在该对象的上下文中评估您的DSL。但您不是指equals!你是说任务!有没有办法使a等于b作为合成糖?只是为了学习的目的,即使它不是最好的练习,等于b等于A等于A等于b等于A等于A等于b等于A等于A等于b等于A等于A等于b等于A等于A等于b等于A等于A等于b等于A等于b等于A等于b等于A等于b等于A等于A等于b等于A等于A等于b等于A等于b等于b。因此,您需要一个对象,该对象同时响应:a消息和:equals消息,并且您需要在该对象的上下文中评估您的DSL。但您不是指equals!你是说任务!只是好奇,你为什么要超负荷作业i、 我能理解。只是好奇,你为什么要超负荷作业?==i、 平等,我能理解。