2005年05月31日(Tue) しっちゃかめっちゃか [長年日記]
● 歯医者に行って新聞代を払って、家賃を払おうと思ったら小切手の最後の一枚を書き損じる。家に戻ってやっと仕事場に行こうと思ったら自転車がパンクしてたよ。
● [Ruby] (a)(10){p 11}
Matzにっきより。
開発版Rubyの「ローカル変数の後ろに引数を並べたものは、そのオブジェクトに対する「call」の呼び出しとするというルール」は、あんまりだなーと思ってた(どう「あんまり」なのか言葉にできないのだけれど)ら、やっぱりそう思っている人も多いらしく、「このアイディアを採用するのは止めようと思う」とのこと。ちょっとほっとした。
まつもとさんは代わりに3つのアイディアを挙げておられる。僕自身は、Pythonの「括弧をつけないときは関数オブジェクト」っていうルールにも違和感を感じるし、「1. なにも新たには追加しない。」でいいんじゃない?と思っていたのだけれど、「3. 『(expr)(args...)』でimplicit call」というのも、Cを触ってる身としては自然に感じられてしまう。ほら、関数ポインタの宣言ってなんだか括弧が多いじゃないですか。
でも、確かにブロックが付くととたんに読みにくいコードになってしまいますね。
● だ〜らだ〜らで〜れだ〜りらん
わはは。たしかにすごい。にっきより。
● C言語で文字列を比較するswitch/case文モドキを思いついた
if〜elseがぶらさがっていくのが嫌だなーと思っていて以下のようなものを 思いついた。なんだか邪道な気もするんだけれどどうだろう。
うだうだ書いてないでコンパイルしてみよう。
Pythonは括弧を付けないと関数オブジェクトなのではなくて、括弧を付けようが付けまいが、常に関数オブジェクトなんです。括弧が付くと、呼び出します。非常に一貫していて分かり易いと思います。Pythonの文法は単純です。
あ、書き方が悪くてすみません。僕は、例えばリストに対してary.sort()という意図でary.sortと書いてしまって、何でソートされてないんだろう?と思ってしまうことが時々あります。Pythonの仕様が悪いといいたいわけではなくて、残念ながら相性が悪いなー、と思ってしまうのです。
それはRubyに慣れ過ぎでは...<br><br>私は逆にRubyで括弧を省略し過ぎてよくはまったので(特にputsとか)、Rubyでも大抵括弧を付けるようになってしまいました。<br><br>良い悪いは私にはよく分からんです。Rubyの文法は説明が難しいので、初心者には辛いだろうなとは思います。慣れれば、どっちでもいいような。ただ世の中は大抵括弧を付けたがるので(JavaとかCとかLispとか(違))、私自身は付ける方が好みです。Rubyの良い所はどっちの好みも認めてくれるところですね。
最近のツッコまれどころ