トップ «前の日記(2006-09-10) 最新 次の日記(2006-09-12)» 編集

日々の破片

著作一覧

2006-09-11

_ Rjb-1.0.1

download
Object getObject() {
    return new Object[] { "a", "b" };
}
とした場合に、クラス名の[Ljava/lang/Object;を配列と認識せずに処理してたのを修正。
svn+ssh が山ほどpasswordを訊いて来る(svnクライアントが複数のコネクションを張るのが原因らしい)ので不安になって、いろいろなパスワードを試した結果、ブラックリストに載ってしまった(らしい)。
と、FAQ街道を驀進中で心より恥じる……

_ ASR-1.8.5.1

ASR-1.8.5.1

パッケージミスしてました。すみません(2回目だ)

ついでというと変だけどrjbも1.0.1に更新。

で、なぜパッケージミスなんてするのかと言うと、Visual Installerの設定方法にあって、安全にやるには、常に全部削除−全部登録が必要だけどそれが遅くてGUI操作ではやってられないというのが理由。

でもそうも言ってられないので、次回からは我慢するか、なんか方法を考えるか(*)で対応予定。

もしかすると、目検はしてるけど他にもコピー漏れがあるかも知れませんので、気づいたら教えてください。

*)考えたぞ。リストボックスを指定すると、その中に入っている文字列をコンソールにリダイレクト(じゃなくてもコピペ可能なようにEditコントロールへコピーでも良いか)するバッチ操作可能なツールを作れば良いのだな。

ツリーコントロールの先頭から順にたぐりながら、右側のリストボックスペインの内容を取得していくようなやつ。

#追記:というか、単にインストールが終わってから元のツリーとの差分を表示すりゃいいだけだな(外部拡張ライブラリは別)。

_ C#の匿名メソッド

既に戻り値の型を見ているんだな。
using System;
public class Ano
{
    delegate string f();
    static void hello(f fun) {
        Console.WriteLine(fun());
    }
    public static void Main()
    {
        hello(delegate { return "Hello"; });
    }
}
匿名メソッドは
primary-no-array-creation-expression:
    …
    anonymous-method-expression
anonymous-method-expression:
    delegate anonymous-method-signature(opt) block
anonymous-method-signature:
    ( anonymous-method-parameter-list(opt) )
anonymous-method-parameter-list:
    anonymous-method-parameter
    anonymous-method-parameter-list, anonymous-method-parameter
anonymous-method-parameter:
    parameter-modifier(opt) type identifier
    ――(C# Language Specification 2.0, March 2005 Draft)
(anonymous-method-parameter-listはオプションなのか……)
なのでメソッドシグネチャに戻り値の型がない。
ということは、型チェックは実行時のInvalidCastExceptionにお任せかというと違う。
using System;
public class Ano
{
    delegate string f();
    static void hello(f fun) {
        Console.WriteLine(fun());
    }
    public static void Main()
    {
        double d = 3.5;
        hello(delegate { return d; });
    }
}
をコンパイルすると
ano.cs(11,9): error CS1502: 'Ano.hello(Ano.f)' に最も適しているオーバーロード メソッドには無効な引数がいくつか含まれています。
ano.cs(11,15): error CS1503: 引数 '1': '匿名メソッド' から 'Ano.f' に変換できません。
とエラーになる。
そこで次のように変える。
using System;
public class Ano
{
    delegate string f();
    static void hello(f fun) {
        Console.WriteLine(fun());
    }
    public static void Main()
    {
        double d = 3.5;
        hello(delegate { return d.ToString(); });
    }
}
戻り値の型がstringになった=fの定義と一致ので、これでコンパイルが通る。
本日のツッコミ(全3件) [ツッコミを入れる]
_ 桑島 (2006-09-11 11:50)

書くのを忘れていたのですが、_invokeで引数に配列が含まれるとき、配列引数の値がnilだと「can't coerce to object array」というエラーになっていたので、手元ではとりあえずr2*arrayの型チェックをしているところで悉く<br> else if (NIL_P(v))<br> {<br> return NULL;<br> }<br>としたら動作しています。

_ arton (2006-09-11 12:47)

空配列使って欲しいとは思うけど取り込みます。

_ arton (2006-09-12 00:26)

リリースはしないけど、直しました。<br>http://rubyforge.org/plugins/scmsvn/viewcvs.php/?root=rjb<br>(_invoke使わなくても引数の数が合っていればOKにしたのと、最初の配列のネスト検証時にチェックを終わらせるようにしました)<br>svnから抜くか、rjb.cを上のURL経由でダウンロードしてください。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|

ジェズイットを見習え