作者: 機械伯爵
日時: 2008/1/21(11:38)
 いや、まじめにRuby勉強しだしてたりします。

 ただ、昔買った本はさすがに古いかと思いますので、そろそろ
教科書を買い換えなきゃなぁ、と思いますけどね。

<正規表現>
> Perlの qr<> による正規表現オブジェクトの組み立てとか、Rubyの
> Regexp.new での構築なんてのもありますので、一概にリテラルがあれば
> いいってものでもないとは思います。

 ふむ、そんなモノなんですか。
 あたしゃ基本的に、Python以外では、AWKのパターンで使ったくらいなんで、
「あったら便利かな」と思っただけですが。

<ブロック>
> んーとRubyのblockは結構便利に使われてるので、blockでこんなに便利という例
> で云うと
> 
> open('ほげほげ', 'r') { |f|
>    ファイルから読み取って行う処理
> }
> 
> とかすると自分で close しないでもステートメント終了時にcloseしてくれるよ。
> っていうのもありますけど、これは機械さんが想定しているのとはたぶん違いま
> すよね?
> #これはPythonだとwith構文使うんでしたっけ?

 withを使うと……

with open('ほげほげ', 'r') as f:
  for line in f:
    ファイルから読み取って行う処理

 でしょうか。コレクションを返す処理なら、内包記法が使えますが、
そうでなければ、上記のように行ったほうが無難ですね。

※無理にexec + 内包記法はかえって面倒

 メソッドで扱ってしまったほうが、確かに便利かもしれませんね。

> あと、「Lispでブロック」ってのが良くわからんのですが、具体的にどういう
> 記述を考えられてます?
> ひょっとして closure のことを云ってるのでしょうか…

 フツーにlambdaで放り込む文のコトですけど。

 Pythonと異なり、SchiemeやLispは複文(複式?)がlambdaで書けますので。
 もちろん、クロージャでもかまいませんが。

 まぁ、質問を挙げておいてなんですが、考えてみれば、ブロック表記は、便利
というより、「メッセージとして考えやすい」ってほうが、重要なのかな、と
思ったりしました。

 読みやすさは、私は明示的なループに頭が慣れてますので、なんともいえませんが、
シンプルな記法があれば、それはそれでパワフルなのかと。

 /機械伯爵/いろいろじっけんちう/