【问题标题】:Ruby on Rails variables, object attributes, and methods that use a : before or after themRuby on Rails 变量、对象属性和在它们之前或之后使用 : 的方法
【发布时间】:2015-10-12 12:07:12
【问题描述】:

这是一个一般性的问题,我只是希望能够稍微了解一下关于冒号位置的 RoR 语法。

我正在第二次阅读 Michael Hartl 的 rails 教程,我想知道是否有人愿意向我解释在名称之前或之后使用 : 调用方法或变量之间的区别?例如,Users 类的“email”属性有时用 :email 调用,有时用 email: 调用。我知道 ruby​​ 非常通用,所以我想我真正的问题是,ruby 解释器是否将这些读取为对同一对象/属性/方法的引用,或者冒号出现的语法是否以某种方式改变了处理?是一种调用方式,另一种更多的是引用,相同的约定是否适用于所有对象?

最后,我想这更像是一种 RoR 风格,还是我会在深入研究 ruby​​ 本身时经常看到它?

谢谢

编辑:因提出合理的问题以帮助澄清语法用法和含义然后感谢人们的回答而被否决?这里有些人真的需要克服自己。

@AnthonyMichaelCook 我听到你在说什么,但这个问题非常基本,不需要代码示例即可回答。两个人给出了清晰简洁的答案,另外一个人评论了变量分配。我感谢他们的回应并继续前进,然后有两个人落后并在事后投票;它只是有一个小小的戒指。具有简单答案的简单问题几乎不需要一些冗长的问题/解释,并带有多个示例,这些示例只会让读者因冗余和/或不必要的信息而烦恼。但是,部分关于人们需要克服自己的评论,不仅来自于被否决的投票,还来自于我在自己寻找答案时阅读的对 stackoverflow 上其他问题的回复。我遇到了不止一些帖子,其中一些响应者几乎是不尊重的,并且给出了居高临下甚至不回答的问题,只是一个明智的评论。几年前,当我第一次来到这个网站时,我是一名网络管理员,我只是觉得社区可能与我以前是常客/贡献者时的情况有所不同。

【问题讨论】:

  • 你最好举一个更具体的例子。
  • 提供您正在查看的教程的链接会很好,以及格式清晰的代码示例,可能会阻止投票。您可以随时返回并编辑您的问题,人们可能会删除反对票。

标签: ruby-on-rails ruby ruby-on-rails-4


【解决方案1】:

:symbol

{key: value}

当冒号在变量/对象之前时,它表示一个“符号”,表示要放置在那里的一段数据。该符号通常可以用于调用属性(键)或散列的一部分:@user.comment[:created_at]

当冒号在变量/对象之后时,这意味着您正在设置获取@987654324中的某种值@ 一对。 {key: value} 对主要用于散列,有点像数组,除了你可以调用特定的键。这就是在 Rails 中调用模型属性的方式。例如:

@user = {name: "joe", email: "joe@email.com"}
@user.name #-> "joe"

【讨论】:

  • 为了增加混乱 - 你也可以写@user = {:name=>"joe", :email=>"joe@email.com"}
  • 当然,但那是旧的 Ruby 语法
  • @RichPeck 感谢您为我分解它,现在它完全有意义。我会给你投赞成票,但我没有名声。
【解决方案2】:

冒号的每一种用法都是普通 Ruby 语法的不同部分。它们在 Rails 编程中都很常见,因此在阅读 Rails 代码时将它们清晰地记在心里是很棒的。

当冒号出现时(例如,:email),即为“Symbol”。它是一个非常节省内存的字符串的简单替代品。

当冒号最后出现时(例如,电子邮件:),它是“Hash”的一部分。这是一个类似于普通列表(或数组)的数据结构,但每个元素都有自己的名称(电子邮件:在此用法中为冒号后面的值设置名称)。

【讨论】:

  • 谢谢,你和 Rich 通过解释帮了我很多忙。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-05
  • 1970-01-01
  • 2013-08-25
  • 1970-01-01
  • 2012-04-01
  • 1970-01-01
相关资源
最近更新 更多