在 ruby​​ on rails 中,感叹号后面是啥意思? [复制]

Posted

技术标签:

【中文标题】在 ruby​​ on rails 中,感叹号后面是啥意思? [复制]【英文标题】:what does an exclamation mark follow with variable mean in ruby on rails? [duplicate]在 ruby​​ on rails 中,感叹号后面是什么意思? [复制] 【发布时间】:2011-09-09 18:33:02 【问题描述】:

可能重复:Why are exclamation marks used in Ruby methods?

我正在阅读使用 MongoDB 的 Rails3 教程

http://www.mongodb.org/display/DOCS/MongoDB+Data+Modeling+and+Rails

我看到了 键:user_id,ObjectId 时间戳! 感叹号是什么意思??

谢谢。

 class Story
  include MongoMapper::Document

  key :title,     String
  key :url,       String
  key :slug,      String
  key :voters,    Array
  key :votes,     Integer, :default => 0
  key :relevance, Integer, :default => 0

  # Cached values.
  key :comment_count, Integer, :default => 0
  key :username,      String

  # Note this: ids are of class ObjectId.
  key :user_id,   ObjectId
  timestamps!

  # Relationships.
  belongs_to :user

  # Validations.
  validates_presence_of :title, :url, :user_id
end

【问题讨论】:

这被标记为excelsyncfusion ...为什么? 如果有人想知道什么时间戳!用于:mongomapper.com/documentation/plugins/timestamps.html 【参考方案1】:

一般来说,当 Ruby 中的方法跟在一个“bang”之后时,它会更改源代码。

例如查看以下输出:

irb(main):007:0> x = 'string'
=> "string"
irb(main):008:0> x
=> "string"
irb(main):009:0> x.capitalize
=> "String"
irb(main):010:0> x
=> "string"
irb(main):011:0> x.capitalize!
=> "String"
irb(main):012:0> x
=> "String"

x.capitalize 返回“字符串”,但变量 x 保持小写。当我添加! ('bang') 到最后 var x 被修改。

我对 mongodb 不是很熟悉,但这可能会对 ruby​​ 中爆炸的目的有所了解。

【讨论】:

这里只是说明一下,破坏性方法(即更改源)中使用的 bang 只是一种约定——而 Ruby 充满了约定。 谢谢,我是一个全新的 ruby​​ 新手,但我喜欢理解这样的问题。所以我昨晚花了一些时间,知道这个话题可能会被关闭。感谢您清除它! +1

以上是关于在 ruby​​ on rails 中,感叹号后面是啥意思? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Ruby on Rails Web应用程序控制器生成错误

思考Ruby On Rails的底层代码(Ruby on Rails 開發秘籍 | Ruby on Rails 快速入門)

ruby 在Ruby on Rails中阻止别名

如何在 ruby​​ on rails 中访问 rails 助手和嵌入资产 javascript 文件中的 ruby​​?

在 Javascript 中执行 ruby​​ 方法 - Ruby on Rails App

Ruby on Rails - Ruby 中的 KeyCode [关闭]