たのしい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]