預設引數
def make_animal_sound(sound = 'Cuack')
puts sound
end
make_animal_sound('Mooo') # Mooo
make_animal_sound # Cuack
可以包含多個引數的預設值:
def make_animal_sound(sound = 'Cuack', volume = 11)
play_sound(sound, volume)
end
make_animal_sound('Mooo') # Spinal Tap cow
但是,如果不提供第二個 ,則不可能提供第二個 。不使用位置引數,請嘗試關鍵字引數:
def make_animal_sound(sound: 'Cuack', volume: 11)
play_sound(sound, volume)
end
make_animal_sound(volume: 1) # Duck whisper
或者儲存選項的雜湊引數:
def make_animal_sound(options = {})
options[:sound] ||= 'Cuak'
options[:volume] ||= 11
play_sound(sound, volume)
end
make_animal_sound(:sound => 'Mooo')
可以通過任何 ruby 表示式設定預設引數值。表示式將在方法的上下文中執行,因此你甚至可以在此處宣告區域性變數。注意,不會通過程式碼審查。感謝 caius 指出這一點 。
def make_animal_sound( sound = ( raise 'TUU-too-TUU-too...' ) ); p sound; end
make_animal_sound 'blaaaa' # => 'blaaaa'
make_animal_sound # => TUU-too-TUU-too... (RuntimeError)