我想知道:
之间是否存在差异def replace_title(new_title)
new_title
end
和
def replace_title(new_title)
self.title = new_title
end
我知道:title = new_title
会产生一个局部变量,但上面的代码会发生什么?
答案 0 :(得分:0)
这两段代码都只会返回new_title
以下代码只会返回new_title
def replace_title(new_title)
new_title
end
此代码只会使用title
分配new_title
属性,并返回title
的值,该值与new_title
def replace_title(new_title)
self.title = new_title
end
但请记住,这不会保存对象的价值,因为你没有打电话:
self.save
# or
save
一旦您不在行动中,该值将重置为之前的title
值。
答案 1 :(得分:0)
定义:
def replace_title(new_title)
new_title
end
replace_title("abc")
返回"abc"
。
定义:
def replace_title(new_title)
self.title = new_title
end
replace_title("abc")
相当于title=("abc")
(因为self.title = new_title
相当于title=(new_title)
)。假设title=
被定义为:
def title=(new_title)
@title = new_title
end
然后replace_title("abc")
返回"abc"
,但也将@title
实例变量设置为"abc"
。