方法回归中自我必不可少吗?

时间:2016-09-13 09:01:40

标签: ruby-on-rails self

我想知道:

之间是否存在差异
def replace_title(new_title)
  new_title
end

def replace_title(new_title)
  self.title = new_title
end

我知道:title = new_title会产生一个局部变量,但上面的代码会发生什么?

2 个答案:

答案 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"