Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.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_Operators_Operator Overloading_Anonymous Methods_Addition - Fatal编程技术网

当我们在ruby中使用操作符时会发生什么

当我们在ruby中使用操作符时会发生什么,ruby,operators,operator-overloading,anonymous-methods,addition,Ruby,Operators,Operator Overloading,Anonymous Methods,Addition,正如我所理解的,当我们在ruby中添加两个数字时,将对当前对象调用一个“+”方法,并将参数作为下一个对象 >> 2 + 3 => 5 >> 2.+(3) => 5 这两个示例如何相同?我们是否可以在没有点运算符的情况下调用对象上的方法?在第一个例子中是如何发生的?如果是这种情况,那么3可能是一个调用“+”方法的方法吗?(这甚至没有意义)Ruby知道+是运算符,因为语言的语法是这样说的。还有一个一元+运算符(转换为),该语言的语法允许Ruby知道哪个是哪

正如我所理解的,当我们在ruby中添加两个数字时,将对当前对象调用一个“+”方法,并将参数作为下一个对象

>> 2 + 3
=> 5



>> 2.+(3)
=> 5

这两个示例如何相同?我们是否可以在没有点运算符的情况下调用对象上的方法?在第一个例子中是如何发生的?如果是这种情况,那么3可能是一个调用“+”方法的方法吗?(这甚至没有意义)

Ruby知道
+
是运算符,因为语言的语法是这样说的。还有一个一元
+
运算符(转换为),该语言的语法允许Ruby知道哪个是哪个。语言定义说,操作符作为方法调用实现,并指定每个操作符映射到哪个方法

您所问的问题与询问
o.ma
如何调用
o
上的
m
方法,并将
a
作为参数相同。Ruby的语法和语义就是这样定义的

即使在理论数学中,运算符也是函数。
a+b
符号实际上只是
+(a,b)
(其中
+
R2)的方便符号→R或从R×RR的函数(例如)。我认为你对符号读得太多了,认为运算符是特殊的东西,它们不是,它们只是计算机语言和数学中的函数调用

简而言之,它之所以有效是因为Ruby就是这样定义的

至于

3可以是在“+”方法上调用的方法吗


与此相关,
3
是Fixnum对象
2

上的
+
方法的一个参数,Ruby知道
+
是一个运算符,因为语言的语法是这样说的。还有一个一元
+
运算符(转换为),该语言的语法允许Ruby知道哪个是哪个。语言定义说,操作符作为方法调用实现,并指定每个操作符映射到哪个方法

您所问的问题与询问
o.ma
如何调用
o
上的
m
方法,并将
a
作为参数相同。Ruby的语法和语义就是这样定义的

即使在理论数学中,运算符也是函数。
a+b
符号实际上只是
+(a,b)
(其中
+
R2)的方便符号→R或从R×RR的函数(例如)。我认为你对符号读得太多了,认为运算符是特殊的东西,它们不是,它们只是计算机语言和数学中的函数调用

简而言之,它之所以有效是因为Ruby就是这样定义的

至于

3可以是在“+”方法上调用的方法吗


与此相关,
3
是Fixnum对象
2

上的
+
方法的参数或参数,a+b只是a+(b)的糖类语法。在ruby中,几乎所有的东西都是一个对象,甚至“操作符”也是一个数的方法。没有比糖语法更神奇的了。

a+b只是a+(b)的糖语法。在ruby中,几乎所有的东西都是一个对象,甚至“操作符”也是一个数的方法。没有比糖语法更神奇的了