2014-05-08 44 views
0

我不明白,爲什麼在這短短的Ruby腳本不利用「勞倫斯」:它爲什麼不把它大寫?

class Player 

    def his_name #the same as attr_reader :name ? 
    @name 
    end 

    def his_name=(new_name) #the same as attr_writer :name ? 
    @name = new_name.capitalize 
    end 

    def initialize(name, health=100) 
    @name = name.capitalize 
    @health = health 
    end 

player2 = Player.new('larry', 60) 
puts player2.his_name 
puts player2.his_name=('lawrence') 

,我得到這樣的輸出:

60 
Larry 
lawrence #why not Lawrence ? 

感謝

+0

'把player2.his_name#=> Lawrence' – xlembouras

回答

2

的結果表達式x = yy並且表達式o.x = y的結果是y-如果它是變量賦值或設置者,則無關緊要。 (通過上述形式調用setter的結果會被丟棄。)

比較:

puts player2.his_name = 'lawrence' # -> lawrence 
puts player2.his_name    # -> Lawrence 
3

你的方法作品和它大寫的名字,林心如只是忽略你的方法的返回值。從documentation for methods

注意,對於分配方法的返回值將始終是 忽略。相反的說法將被退回:

def a=(value) 
    return 1 + value 
end 

p(a = 5) # prints 5 
+0

感謝。要證明這一點我輸入: 'player2 = Player.new( '拉里',60) 提出player2.his_name 提出player2.his_name =( '勞倫斯') 放player2.his_name ' 並獲得: 「 Larry Lawrence Lawrence ' – luca

+0

對不起,格式不正確。 – luca

+0

@luca使用反引號格式化代碼,請參閱[註釋格式](http://stackoverflow.com/editing-help#comment-formatting) – Stefan

相關問題