メソッドを定義してみる。

メソッドを定義する。やっとここまで来たか。長かった。

def hoge(a, b)
  return a + b
end

p hoge(1, 2)

結果。

3

returnは無くてもOK、最後に評価した式が自動的に返される。引き数のカッコも無くてOK。
無くてもいいなら無いほうを選ぶ怠け者の私ですが、引き数のカッコは悩む。どっちが主流なのか。怠け者かつ太いものには巻かれる私でございます。

def hoge a, b
  a + b
end

p hoge(1, 2)

メソッドは使うよりも前に定義しなくてはならない。

p hoge(1, 2)

def hoge a, b
  a + b
end

激しく叱られます。そんなに言わなくても…

./hoge.rb:3: undefined method `hoge' for main:Object (NoMethodError)

メソッド内部にメソッドを作ることも可能。

def hoge a, b
  def huga a, b
    a * b
  end
  huga(a, b) + a + b
end

p hoge(1, 2)

結果。

5

メソッドの引き数にデフォルト値を指定することだって可能さ。

def hoge a, b = 2
  a * b
end

p hoge(2)
p hoge(2, 3)

結果。

4
6

可変長の引き数を受け取ることだってできちゃう。

def hoge a, *b
  c = a
  b.each do |i|
    c+=i
  end
  c
end

p hoge(1, 2, 3, 4, 5)

結果。

15

メソッド定義一つをとってもいろいろあって楽しいなー


Ruby プログラミング基礎講座

Ruby プログラミング基礎講座