たのしいRuby(第2版) 「はじめてのRuby」〜メソッドの呼び出し〜

■これは「たのしいRuby 第2版」を元にしています。
Amazon CAPTCHA

Rubyのメソッドの呼び出し

Rubyのメソッドは、「()」を省略することができます。

つまり、

print("Hello,Ruby"")

print "Hello,Ruby"

と書くことができる。ということです。
実際に、動かしてみます。

C:\enjoy_ruby>ruby helloruby.rb
Hello,Ruby!

「()」なしでも、ちゃんと出力されました。


この、「()」で思うのは、はやり、可視性を良くするか、悪くするかで使うか、使わないかを決めたりします。
「なければ良いというものでもない」ですね。「あった方がよいときもある」。Rubyらしい感じはしますけど。


例えば、

a,b,c,d = 1,2,3,4
print a ? b ? d : a : c

まぁ・・・あまりないと思いますが・・・こんなプログラムがあったとします。実行してみましょう。

C:\enjoy_ruby>ruby helloruby.rb
4

出力結果は4でした。


カッコを付けてみました。

a,b,c,d = 1,2,3,4
print(a ? (b ? d : a) : c)

もちろん、実行結果は、

C:\enjoy_ruby>ruby helloruby.rb
4

同じです。


「()」がついていた方が、見やすいですよね。
三項演算の入れ子とかは、「()」があった方が見やすいのではと思います。



このように、カッコは省略できるけど、省略すればよいというものではないですね。
可視性重要です。


カッコがないと、引数なのか、メソッドなのか分かりにくい?

また、こんなプログラムを書いた場合、

print(puts "Hello,Ruby!" )
  • 実行結果
C:\enjoy_ruby>ruby helloruby.rb
helloruby.rb:1: warning: parenthesize argument(s) for future version
Hello,Ruby!
nil

こうなります。warningです。将来のバージョンのために、引数はカッコに入れてくれみたいなことを言われます。

  • カッコ入れたバージョン
print(puts("Hello,Ruby!"))
  • 実行結果
C:\enjoy_ruby>ruby helloruby.rb
Hello,Ruby!
nil

warningが出ません。

基本的には、カッコを付けてくれという感じだと思います・・・が思い違いでしょうか・・・。


カッコがないと、引数なのか、メソッドなのか分かりにくい場合があるので注意です。

環境

C:\enjoy_ruby>ruby -v
ruby 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32]