這是一個地址簿的類。我想要能夠調用full_name
方法。如果沒有中間名,那麼在名字和姓氏之間不應該有空格。爲什麼Ruby的大寫方法試圖調用自己的空變量?
我正在調用capitalize
方法,以便將名稱的第一個字母大寫。當我進入一箇中間的名字就可以正常運行,但如果沒有中間的名字我收到此錯誤:
contact.rb:9:in `middle_name': undefined method `capitalize' for nil:NilClass (NoMethodError)
from contact.rb:18:in `full_name'
from contact.rb:31:in `<main>'
這是Contact類:
class Contact
attr_writer :first_name, :middle_name, :last_name
def first_name
@first_name.capitalize
end
def middle_name
@middle_name.capitalize
end
def last_name
@last_name.capitalize
end
def full_name
full_name = first_name
if !middle_name.nil?
full_name += " "
full_name += middle_name
end
full_name += " "
full_name += last_name
full_name
end
end
沒有一箇中間名名稱:
jon = Contact.new
jon.first_name = "jon"
jon.last_name = "bell"
puts jon.full_name
隨着中間名:
hugo = Contact.new
hugo.first_name = "hugo"
hugo.middle_name = "don"
hugo.last_name = "boss"
puts hugo.full_name
用戶肯定會給出的強制屬性是什麼? –
如果你使用空字符串進行初始化,那麼這不會是一個問題,你可以像這樣定義full_name'def full_name; [first_name,middle_name,last_name] .map(&:大寫).join('');結尾' – engineersmnky
但是必須定義三個空字符串...... :( –