我最近拿起了Ruby和Rails,并在Ruby中看到了此:foo
语法,其中包含After_accessor之类的东西,使用模型方法,但我不太了解。该语法的名字是什么,它是什么?见证案例的一个例子
class Dog
attr_accessor :name
end
///second scenario
class CreatePurchases < ActiveRecord::Migration
def change
create_table :purchases do |t|
t.string :name
t.float :cost
t.timestamps
end
end
end
//third scenario
class Purchase < ActiveRecord::Base
validates :name, presence: true
validates :cost, numericallity: {greater than : 0}
end
您在Ruby周围看到的:foo
语法称为符号,它是type
,就像String
是一种类型一样。在红宝石字符串中是可变的对象,这意味着它们在声明后可以更改,但是符号不能。您所说的所有示例也可以与字符串一起使用,例如:
# with Strings
attr_accessor 'foo'
validates `name`
# with Symbols
attr_accessor :foo
validates :name
但是,在Ruby中,使用符号是标准实践,因为它们如何分配给内存,并且因为它们在性能方面更快。字符串每次都会在记忆中分配一个新的空间,即使它们具有相同的内容,因为它们是可变的。但是,由于符号是不可变的,当您声明一个符号时,它在整个程序中都保留在内存中(这意味着垃圾收集器不会删除它(,并且也存储在特殊的"字典"中,该符号对性能进行了优化,这意味着符号停留,独特,可以很快检索。