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