首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >instance_name[:column_name]和instance_name.column_name有什么不同?

instance_name[:column_name]和instance_name.column_name有什么不同?
EN

Stack Overflow用户
提问于 2010-12-05 08:55:57
回答 2查看 112关注 0票数 0

我是Rails的新手。我发现下面的两种方法得到了相同的结果,但我不能理解代码。

[ ]应该是数组的运算符,对吗?为什么我可以这样使用它:

代码1:

代码语言:javascript
复制
drummer = Drummer.find(1)
drummer[:name]
=>"Jojo Mayer"

代码2:

代码语言:javascript
复制
drummer = Drummer.find(1)
drummer.name
=> "Jojo Mayer"
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-06 11:58:58

实际上,这有一个重要的区别。

如果您需要通过覆盖setter对值进行某种处理:

代码语言:javascript
复制
class Drummer
  def name= value
    self[:name] = value.capitalize
  end
end

然后,drummer:name允许您绕过覆盖。

票数 1
EN

Stack Overflow用户

发布于 2010-12-05 09:20:52

这是没有区别的。基础实例方法[]只调用返回相同值的read_attribute。

[]方法的目的是允许使用变量传递属性名称,例如:

代码语言:javascript
复制
key = :name
drummer[key]
   =>"Jojo Mayer"
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4356772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档