在此示例中,方法定義中的最後一個english
對我來說似乎沒有必要。我拿出來了,代碼工作得很好。爲什麼這本書包含它?是否有某種我不知道的約定?方法定義中的額外表達式
class Integer
def to_eng
if self == 5
english = 'five'
else
english = 'fifty-eight'
end
english
end
end
# I'd better test on a couple of numbers...
puts 5.to_eng
puts 58.to_eng
它在計算上是等同的,但更清楚地表達了你對人的意義。相關的,它也保護你的情況下,上面的代碼改變。 –
不僅如此 - 變量的存在是毫無意義的。你可以用'if self == 5'和'five'else'five-eight'end'替換方法體。 – Chuck
@Darshan,我恭敬地不同意。所有這些不必要的代碼行和不必要的局部變量都是混亂的。 Imo,讀者可以解析'self == 5? '五':'五十八'(正如@Donatas所建議的)速度要快很多,而且誤讀的可能性也會降低。至於在最後重複該變量以防止對代碼進行更改,它可能會產生相反的效果。 –