トップ «前の日(11-17) 最新 次の日(11-19)» 追記   RSS 1.0 FEED  

Journal InTime


2002-11-18 (Mon)

_ C#のイテレータ(2)

ruby-devでも書いたけど、C#のイテレータだと一つのクラスに複数の イテレータを定義できないので不便な気がする。

public class List {
  internal object[] elements;
  internal int count;

  // Elementsという名前のイテレータ定義
  public iterator object Elements()
  {
    foreach(object o in elements)
    {
      yield o;
    }
  }
}

のように色々な名前でイテレータを定義できるようにして(実装的には Elementsという名前のメソッドで外部イテレータを返すようにする)、

foreach (object o in list.Elements()) {
  ...
}

のようにforeach文で、コレクション(list)の代りに、イテレータ呼び 出し(外部イテレータを返すメソッドのよび出し - list.elements())を 指定するようにした方がCLU風味でよくないだろうか。


2003-11-18 (Tue)

_ Centrino under Linux

CentrinoのLinuxサポートをIntelに求める署名をした。

<URL:http://www.petitiononline.com/xanthan/petition.html>

_ インデント幅

昔rubyでコードを書く時のインデント幅を3にしたいた理由が思い出せなかったのだが、 Satherの影響のような気がしてきた。

_ イテレータの動的分配

Satherコンパイラで イテレータの動的分配ができるようになった。

abstract class $TIMES is
   times!(once n: INT): INT;
end;

class TIMES < $TIMES is
   create: SAME is
      return new;
   end;

   times!(once n: INT): INT is
      i ::= 0;
      loop
         while!(i < n);
         yield(i);
         i := i + 1;
      end;
   end;
end;

class MAIN is
   main is
      t: $TIMES := #TIMES;
      loop
         i ::= t.times!(3);
         #OUT + "i=" + i + "\n";
      end;
   end;
end;

_ parameterrized type

どういう実装にするのかが悩ましい。

内部的には全部System.Objectにして、INTとかはboxingすればいいかなとも思ったけど boxingのオーバーへッドが気になるところ。 あと、.NETの配列をどういう扱いにするかって問題もあるし。

といって、パラメータとして与えられた型毎にクラスを作るのも、生成したクラスをどの アセンブリに含めるかが悩ましい。

C#で実装されるのを待つか…。


2004-11-18 (Thu)

_ Groovyのit

RubyにGroovyのitを導入するというのはどうだろう。

ary.each { p it }

は、

ary.each { |it| p it }

と同じ意味。

ワンライナーでうれしいかもしれない。

多値を受け取りたい場合は、themで配列で受け取るとか?

sum = ary.inject(0) { them[0] + them[1] }

これは何もうれしくないな、うん。

Tags: Ruby

_ readlineの$SAFE対応

これを押し進めると、以前前田くんが述べていたように、特別な APIを経由しない限り拡張ライブラリで定義されたメソッドは自動 的に$SAFE=2で禁止、というのも一つの考えだと思います。

[[ruby-dev:24909] Re: Process.getrlimit and Process.setrlimitより引用]

あれ、そんなこと言ってましたっけ。

それはさておき、readlineが$SAFEに対応してなかったので、対応。 cursesも怪しいな。

Tags: Ruby

2016-11-18 (Fri)

_ リモコンキーの電池交換

電池交換

エクシーガ(CBA-YA5)のリモコンキー(非キーレスアクセス)の効きが悪くなったので交換した。

電池の型番はCR1620だった。