アカウント名:
パスワード:
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
海軍に入るくらいなら海賊になった方がいい -- Steven Paul Jobs
インフラ言語 (スコア:1, 参考になる)
Re:インフラ言語 (スコア:2, すばらしい洞察)
文法の自由度(?)が高すぎるのも不満です。
do~endと{}の両方が使えたり、::と.のどちらでも書けたり、
というのは、コーディング規約が人の数だけ増えてしまって、
保守の際の頭痛の種でしかありません。
あと個人的には、文字列がmutableなのも好きになれません。(これは好みでしょうが)
Re:インフラ言語 (スコア:3, 参考になる)
どちらも完全に交換可能ではありません。
do~endと{}は結合規則が異なります。詳しくはリファレンスマニュアル [ruby-lang.org]を。
ただ、これは微妙な違いだし間違いの元なので、
結合規則の違いを利用したコードを私は書きません。
使い分けとしては、メソッドチェーンの中でブロックを渡す必要があるときは{}を、
それ以外はdo~endを使うようにしています。
なので、each、map!なんかはdo~endを、map、sortなんかでは{}を使うことが多いです。
だいたいループや破壊メソッド(でブロックを取る物)はdo~endを、
それ以外のメソッド(同様)では{}を使うかなといったところです。
# 無論、例外はあります
::と.が交換可能なのはモジュール(クラス)メソッドを呼ぶときだけです。
モジュール(クラス)定数を外から参照するときは::しか使えません。
# だからといって自由度が高すぎるという批判は免れるわけじゃないんだけど。