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_Class_Syntax_Accessor - Fatal编程技术网

与Ruby访问器方法混淆

与Ruby访问器方法混淆,ruby,class,syntax,accessor,Ruby,Class,Syntax,Accessor,我真的很困惑如何在Ruby类中命名方法名。如果我创建一个访问器,如: 属性存取器:名称 它创建了以下方法: 名称 和 名字= 但是当我调用第二个方法时,在“name”和“=”之间有一个空格,它就工作了 “n.name=”和“n.name=”都可以使用 我在某个地方读到Ruby忽略了空格。那么,为什么我编写的方法在我用空格调用它时不起作用呢 def getname 结束 如果我这样叫,那就不行了。为什么? t、 得名 我并不惊讶,因为它不起作用。但是我很困惑setter方法(name=)是如何工作

我真的很困惑如何在Ruby类中命名方法名。如果我创建一个访问器,如: 属性存取器:名称

它创建了以下方法: 名称 和 名字=

但是当我调用第二个方法时,在“name”和“=”之间有一个空格,它就工作了

“n.name=”和“n.name=”都可以使用

我在某个地方读到Ruby忽略了空格。那么,为什么我编写的方法在我用空格调用它时不起作用呢

def getname 结束

如果我这样叫,那就不行了。为什么? t、 得名

我并不惊讶,因为它不起作用。但是我很困惑setter方法(name=)是如何工作的


提前谢谢

getName是方法的名称,因此不能有空格,因为它认为它是两个方法,或者可能是一个参数,这就是为什么我们使用case使其可读。但是等号是一个操作数,它周围可以有空格。这和说“2+2”和“2+2”是一样的。
希望这有助于

getName是方法的名称,因此不能有空格,因为它认为它是两个方法或可能是一个参数,这就是为什么我们使用case使其可读。但是等号是一个操作数,它周围可以有空格。这和说“2+2”和“2+2”是一样的。
希望这对Ruby中的setter有帮助

事实上,定义以等号结尾的方法名可以使该名称有资格显示在赋值的左侧

分配在Ruby中定义为:

赋值语句将左侧的变量或属性(左值)设置为引用右侧的值(右值)

因此,
n.name=
直接调用setter
name=


n.name=
是对setter的特殊处理,它以一个
=
结尾,这样你就可以在赋值中使用它作为左值(也就是说,它可以出现在左边)。setter在Ruby中是特殊的

事实上,定义以等号结尾的方法名可以使该名称有资格显示在赋值的左侧

分配在Ruby中定义为:

赋值语句将左侧的变量或属性(左值)设置为引用右侧的值(右值)

因此,
n.name=
直接调用setter
name=


n.name=
是对setter的特殊处理,它以一个
=
结尾,这样您就可以在赋值中使用它作为左值(也就是说,它可以出现在左边)。

但是在setter中,=是方法名称的一部分。不是吗?在Ruby中,变量名和方法名应该是小写的,单词之间应该用下划线分隔。强烈反对使用驼峰大小写,但在类名中除外。但在setter中,=是方法名的一部分。不是吗?在Ruby中,变量名和方法名应该是小写的,单词之间应该用下划线分隔。强烈反对使用camel大小写,但在类名中除外。