Ruby 红宝石。符号'=';在中,设置程序名称和对象的初始化
在第一种情况下:Ruby 红宝石。符号'=';在中,设置程序名称和对象的初始化,ruby,object,setter,initializer,Ruby,Object,Setter,Initializer,在第一种情况下: class Item def name=(name_value) @name = name_value end def name @name end end 我一直在变老 item = Item.new item.name=("value") puts item.class 在第二种情况下: Item 我有 item = Item.new.name=("value") puts item.clas
class Item
def name=(name_value)
@name = name_value
end
def name
@name
end
end
我一直在变老
item = Item.new
item.name=("value")
puts item.class
在第二种情况下:
Item
我有
item = Item.new.name=("value")
puts item.class
为什么??我不理解其中的区别。在第二种情况下,您正在创建一个新项目并设置名称,当您设置名称时,它将返回一个字符串,您将该字符串分配给项目变量。 你应该使用第一种形式 或从ActiveRecord继承时:
String
在第二种情况下,您正在创建一个新项并设置名称,当您设置名称时,它将返回一个字符串,您将该字符串分配给Item变量。 你应该使用第一种形式 或从ActiveRecord继承时:
String
Ruby认为您的第二个示例如下
item = Item.new(:name=>"value")
赋值运算符的返回值是被赋值的值Item.new.name='value'
返回'value'
,Item='value'也是如此
item = Item.new.name = 'value'
Ruby认为您的第二个示例如下
item = Item.new(:name=>"value")
赋值运算符的返回值是被赋值的值Item.new.name='value'
返回'value'
,Item='value'也是如此
item = Item.new.name = 'value'
在Ruby中,赋值表达式的计算结果是被赋值的值 即: 计算结果为
'bar'
那么,在你的情况下
foo = 'bar'
哪一个更习惯于这样写:
Item.new.name=("value")
分配的值是字符串“value”
item = Item.new.name = 'value'
因此,Item.new.name='value'
的计算结果为'value'
(当然还有调用name=
方法的副作用),这意味着
Item.new.name = 'value'
评估为
item = Item.new.name = 'value'
最后,
项
的值为'value'
,这是一个字符串
,,在Ruby中,赋值表达式的计算结果为被赋值的值
即:
计算结果为'bar'
那么,在你的情况下
foo = 'bar'
哪一个更习惯于这样写:
Item.new.name=("value")
分配的值是字符串“value”
item = Item.new.name = 'value'
因此,Item.new.name='value'
的计算结果为'value'
(当然还有调用name=
方法的副作用),这意味着
Item.new.name = 'value'
评估为
item = Item.new.name = 'value'
最后,
项
的值为'value'
,这是一个字符串
我们的答案就像双胞胎:)我们的答案就像双胞胎:)