()
Rubyのprintメソッド、()を省略できるらしいですが、省略した時とつけたときで、挙動が違って、
どういうこっちゃーってなってます。
def hello(name) print ("Hello, ", name,".\n") end hello("Ruby")
上のコードをhello_with_name.rbとして保存して、
ruby hello_with_name.rbとすると
hello_with_name.rb:2: syntax error, unexpected ',', expecting ')' print ("Hello, ", name,".\n") ^ hello_with_name.rb:2: syntax error, unexpected ')', expecting tCOLON2 or '[' or '.' hello_with_name.rb:5: syntax error, unexpected $end, expecting keyword_end
シンタックスエラーが出てきます。
上のコードは参考書にそのまま載ってたものなので、動くはずなんですが、動かない・・・
使ってるRubyのバージョンによる仕様の違いですかね。
とりあえず、()を外して、それ以外はそのままにして
def hello(name) print "Hello, ", name,".\n" end hello("Ruby")
で保存して、ruby hello_with_name.rbをしてみると
Hello, Ruby.
と普通に表示されます。
んー、なんでしょうかね、これは。
文字列と変数を区切って、ひとつのprintで出力させようとすると()をつけるとシンタックスエラーが出てくるみたいです。
原因がよくわかりませんが、()外したら、ちゃんと出力されるので、
文字列と変数をひとつのprintで出力したいときは、()は付けないようにしようと思います。