2016-09-13 18 views
0

我不知道是否有之間的差異:在方法返回中自我必不可少?

def replace_title(new_title) 
    new_title 
end 

而且

def replace_title(new_title) 
    self.title = new_title 
end 

我知道有區別:title = new_title,將創建一個局部變量,但會發生什麼上面的代碼?

回答

0

兩個密碼將只返回你的new_title

的值下面的代碼將只返回你的new_title

def replace_title(new_title) 
    new_title 
end 

價值而此代碼將只是new_title分配title屬性,並會返回值爲title,與new_title的值相同

def replace_title(new_title) 
    self.title = new_title 
end 

但是請記住,你不是叫不會保存對象的值:

self.save 
# or 
save 

只要你出了行動的價值將被重置的title以前的值。

0

隨着定義:

def replace_title(new_title) 
    new_title 
end 

replace_title("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")返回​​,但還設置@title實例變量​​。

相關問題