2011-06-07 86 views
2

可能重複:
Why are exclamation marks used in Ruby methods?感嘆號在軌道上的紅寶石中的變量意味着什麼?

我讀教程Rails3中使用MongoDB的

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 
+0

這被標記爲「excel」和「syncfusion」...爲什麼? – 2011-06-07 04:25:11

+0

如果有人想知道什麼時間戳!是爲: http://mongomapper.com/documentation/plugins/timestamps.html – dsims 2012-05-26 04:03:43

回答

0

一般來說,當'bang'遵循Ruby中的方法時,它將改變源。

例如檢查出下面的輸出:

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並不是很熟悉,但這可能會讓我們對紅寶石爆炸的目的有所瞭解。

+1

這裏只是一個註釋,用於破壞性方法(即改變源代碼)的爆炸僅僅是一個約定 - 而且Ruby已經滿了的公約。 – Chubas 2011-06-07 15:40:25

+0

謝謝,我是一個全新的紅寶石,但我喜歡這個問題。所以昨晚我花了一些時間,知道這個話題可能會被關閉。感謝您解決這個問題! +1 – matchew 2011-06-07 15:46:15