Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.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 on rails 红宝石符号命名_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 红宝石符号命名

Ruby on rails 红宝石符号命名,ruby-on-rails,ruby,Ruby On Rails,Ruby,我目前正在为我实习的公司审查客户代码库。这个API是用RubyonRails构建的。我是Ruby新手,但是已经用其他语言编写了程序,所以通过查看代码(和一些教程),我已经能够理解大部分正在发生的事情,但是有一行代码看起来像下面的代码,这让我很反感。为什么符号的名称前面有相等的字符?这感觉不合法,但ruby有点酷。谢谢你的帮助 delegate:name=,:description=,:tags=,to::userruby符号对其可以包含的字符几乎没有限制,它主要与我们通常选择的“easy”表示形

我目前正在为我实习的公司审查客户代码库。这个API是用RubyonRails构建的。我是Ruby新手,但是已经用其他语言编写了程序,所以通过查看代码(和一些教程),我已经能够理解大部分正在发生的事情,但是有一行代码看起来像下面的代码,这让我很反感。为什么符号的名称前面有相等的字符?这感觉不合法,但ruby有点酷。谢谢你的帮助


delegate:name=,:description=,:tags=,to::user

ruby符号对其可以包含的字符几乎没有限制,它主要与我们通常选择的“easy”表示形式相关联

完全可以有以下符号:

:“你好/世界”
:€
:“a+b”
当符号用于表示方法时,它会变得有点棘手,因为我们喜欢它附带的简单语法,但实际上它与使用例如
public\u send
发送符号相同:

foo.public\u send(:“a+b”)
如果您定义了一个名为“a+b”的方法,则此代码将起作用。当然,您不能用通常的
def
来定义它,但它仍然是可能的


现在,一些方法,如
name=
提供了额外的语义,因此以下方法是等效的:

object.name=“Fubar”
发送(:name=,“Fubar”)

另一点:在Ruby中,作为一种模式,您不使用前缀
set
get
,而只使用
get
的属性名和
set
的后缀
=
。例如:
setName
getName
方法分别是
name=
name


Ruby允许您在这些轴中使用setter方法:
obj_instance.name='name'
(您可以省略
()
,并在字符前面使用空格,如
=
)或
obj_instance.name=('name')
,它们是setter方法,仅此而已。如果你在网上搜索类似于“ruby setter方法”的sthng,你会发现很多<代码>委派采用代表委派方法的符号。名为
name=
的方法的符号是
:name=
@DaveNewton谢谢你的回答。谢谢你的回答谢谢你的回答answer@Praise不客气:)现在你甚至可以投票了,只要有投票权就可以了。完成。