rubyでメソッドの最後にreturnを記述しない場合、何が返されますか?

Rubyのメソッドは、最後に明示的なreturn文を記述しない場合でも、そのメソッドの最後に評価された式の結果が自動的に返されます。以下に例を示します。

def add(a, b)
  sum = a + b  # 最後に評価された式はこの行の式
end

result = add(3, 5)
puts result  # 出力: 8

この例では、addメソッドの最後にsum変数の値が評価されて返されます。

ただし、return文を明示的に使用することで、メソッドの途中で値を返すこともできます。

def subtract(a, b)
  return a - b  # メソッドの途中で値を返す
  puts "この行は実行されません"
end

result = subtract(10, 4)
puts result  # 出力: 6

こちらの例では、return文が実行されるため、メソッドの途中で値が返されて、その後のコードは実行されません。

要するに、Rubyのメソッドでは、明示的にreturn文を使わなくても、最後に評価された式が自動的に返されるため、returnを省略することが一般的です。

なぜそうなるのか?

Rubyの設計思想の一つは、シンプルさとエレガンスです。メソッドが最後に評価された式を自動的に返すことにより、冗長なコードを減少させ、より簡潔なプログラムを書くことができます。この仕様の背後には、以下のような理由が考えられます。

  1. 直感的なコード: Rubyは直感的な言語として知られており、メソッドが最後に評価された値を返す仕様は、プログラマが予測可能で直感的なコードを書くのを助けます。値を明示的に返すために毎回return文を書く必要がないため、コードがすっきりとしています。

  2. 冗長性の削減: メソッドの最後にreturn文を書く必要がないことで、余分なコードを削減することができます。メソッドの中身が単純な場合には、値を返すためにreturn文を書くことなくメソッドを定義できます。

  3. 柔軟性: メソッドが最後に評価された式を自動的に返すことで、プログラマは柔軟にコードを書くことができます。途中で条件分岐やループを使用して値を計算し、その結果をメソッドから返すことができます。

ただし、プログラマが明示的にreturn文を使って値を返すことも可能であり、必要に応じて制御を明示的に行うことができます。このバランスにより、シンプルさと柔軟性の両方を保つことができるのです。

このような設計思想によって、Rubyは初心者から上級者まで幅広いプログラマにとって魅力的な言語となっています。

(上記の文章は、ChatGPTのデジタルな鼓動が紡いだものです。)