From: Shingo Hagiwara <
rindou@...>
Subject: [ruby-list:46154] メソッドArgumentのParenthesisについて
Date: Fri, 3 Jul 2009 21:51:04 +0900
るびきちです。
> Source補完機能を使ったとき、メソッドで「()」付きで補完される場合と、
> 「()」無しで補完される場合があります。
> 例えばですが、
> hoge arg1 arg2
> と補完される場合と、
> foo(arg1, arg2)
> と言う場合があると言うことです。
>
> この括弧の省略ができるというのは知っているつもりなのですが、
> この二つに何か差異はあるのでしょうか?
hoge arg1 arg2
ではなくて
foo bar arg1
ではないかと?
そのときは
foo(bar(arg1))
と同じ意味です。
hoge arg1, arg2
と
hoge(arg1, args2)
は等価です。
hogeとかfooではなくて実際のコード例を見てみたいものです。
> また、括弧を構文的に付けないことを許している理由はなんなのでしょうか?
> 個人的には括弧を付けないとBasicを思い出して非常に気持ちが悪い気がします。
記号を多くしすぎないことが理由だったと思います。
このおかげで可読性を上げることができます。
たとえば、Rakefile(Ruby版make)には、こんなふうに書けます。
ふつうのRubyスクリプトですが、括弧が省略可能なことと、ブロック構文の
絶妙な美しさのおかげで、設定用ミニ言語のように見えます。
file "foo.o" => "foo.c" do
sh "gcc -c foo.c"
end
もし、括弧を全部つけてしまうと、
file({"foo.o" => "foo.c"}) do
sh("gcc -c foo.c")
end
となり、見辛くなってしまいます。
もし、Rubyが括弧省略不可能でガチガチな言語ならば、好きになれません。
--
rubikitch
Blog:
http://d.hatena.ne.jp/rubikitch/Site:
http://www.rubyist.net/~rubikitch/Twit:
http://twitter.com/rubikitch/『Ruby逆引きハンドブック』
http://d.hatena.ne.jp/rubikitch/20090525/rubybook