メソッド引数(ひきすう)

メソッドには2種類ありますね

  • 1つのオブジェクトに対し単独で用いられるもの
    • gets, to_i, to_s, reverseやcapitalizeなど
  • 引数(prameter)を取ってオブジェクトがそのメソッドをどのように実行するか指定する必要があるもの
    • +, -, puts, defなど

先にやったsmileを『ニヤリ』と定義したプログラムに引数を付け加えるには(例えばニヤリする回数を加える)次のようになりますね
もともとのプログラム

def smile
puts 'ニヤリ'
end

smile
smile
puts 'ニコリ'
smile
smile

引数を付け加えた場合(ニヤリの回数を指定)

def smile number_of_smiles
  puts 'ニヤリ' * number_of_smiles
end

smile *3
puts 'ニコリ'
# 下行は引数がないためエラーとなる
smile
moomin:programmingRuby tomomi$ ruby method.rb
ニヤリニヤリニヤリ
ニコリ
method.rb:8:in `smile': wrong number of arguments (0 for 1) (ArgumentError)
	from method.rb:8
  • 上の number_of_smilesとは与えられた引数を指す変数(メソッドを実行する時に与えられた引数(ニヤリの回数) をメソッドの中から指す変数)
    • 上の場合 smile *3 とあるので、引数は "3"ですね
  • このプログラムでは最初の行で "def smile number_of_smiles"と(引数があるsmileであると)定義したため、引数が必要となりました。よって引数を与えられていない "smile" はerrorとなります
    • では引数を与えられなかったらどうすればよい?どうしようもない