Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Matzにっき


2006年01月28日 [長年日記]

_ [言語] LINQ

遅延Enumerableに関連して コメントで教えていただいた LINQ(Language Integrated Query)だが、 C#だとこんな感じらしい。

var 学籍番号前半名 =
  from p in 学生名簿
  where p.学生番号 <= 15
  orderby p.学生番号
  select p.名;

ふむ、だけどこれならRubyで

学籍番号前半名 =
  学生名簿.
  select{|p| p.学生番号 <= 15}.
  sort_by{|p| p.学生番号}.
  collect{|p| p.名}

で実現できるよね、

各節に当たるものが独立なので、同じパラメータを何度も指定する必要があることと、 効率良く実装するのがちょっと大変ということは除くとして。

ブロック万歳。

だが、「|p|」が何度も登場するのは確かにちょっとうっとうしいかも。 ruby-talkで話題になっていた「implicit block parameter」(具体的にはGroovyの「it」)が欲しくなるかも。

そうすると、こうなる

学籍番号前半名 =
  学生名簿.
  select{it.学生番号 <= 15}.
  sort_by{it.学生番号}.
  collect{it.名}

あるいは、一連のブロックで共通に使うパラメータを用意すると言う手もあるかも。 今は文法、思いつかないけど。

いずれにしても、LINQいらないじゃん。

後はLINQっぽいものを効率良く実装する仕組みだな。

あ、でも、上記のページで紹介されている「C# 3.0の新機能」はどれも面白い。 「面白いけど、ほんとに(言語レベルで)必要?」というものが多いけど。

もうちょっと考えてみよう。

_ シガーソングライター(もどき)

ディスカウントストアで「シガーソングライター」のようなものが、 安売りしていたので思わず購入。4980円。

外見も含めてほぼ同じ(OEM?)のようだが、再生順序が謎(シガーソングライターはファイル名順らしい)。 ドキュメントには登録順と書いてあるのだが、どうもそうでもないようだ。 FATファイルシステムのファイル取得順ってなにかあったっけ?

fatsortとかを導入してみればよいのか。

ユーザインタフェースについては気に入らない点が二つ。

  • 電源が落ちるとリセットされる
  • 「戻る」ボタンを押すと、前の曲の先頭に戻る。

前者はコスト的に記憶系を一切持っていないだろうから、しかたないとしても、 後者は手抜き過ぎかな。