タグ

ブックマーク / blog.bugyo.tk (2)

  • リリカル☆Lisp開発日記 » Blog Archive » 悪い子のためのDart講座〜メソッドを実行時に追加する〜

    いつの間にやら、GoogleからDartという言語が発表されました。 世間の評判を見てみると、一部の方々からは 「無難な感じで刺激が足りない」 「クラスベースが気にわない。JavaScriptみたいに実行時にプロパティを追加したい」 などといった意見も出ているようです。 そこでエントリでは、刺激を求める方々のために、 Dartで実行時にメソッドを追加する方法を紹介します。 まずはこちらのコードを御覧ください。 main() { var i = new Flexible(); i.addMethod("plus1", (self, n) { return n + 1; }); i.addMethod("wawa", (self, x, y) { return self.plus1(x) + self.plus1(y); }); var x = i.plus1(99); print(x);

    mooz
    mooz 2011/10/31
    noSuchMethod……Dart さんご乱心……
  • リリカル☆Lisp開発日記 » Blog Archive » with-open-fileをC++/C99で

    Common Lispにはwith-open-fileというマクロがあります。 (with-open-file (stream filename) ... (read-line s) ... ) このマクロは、ファイルをオープンして、 ここを抜けるときに自動的にファイルをクローズしてくれるというものです。 そのため、ファイルの閉じ忘れがおこりません。 このマクロをC++、もしくはC99で再現する方法を思いついたのでメモしておきます。 #define with_open_file(s,p,m) \ for(FILE *s=fopen(p,m); s; fclose(s),s=NULL) ... void hoge(char *path) { char buf[256]; with_open_file(fp, path, "r") { ... fgets(buf, sizeof(buf), f

    mooz
    mooz 2010/06/09
    マクロで for (FILE *s=fopen(p,m); s; fclose(s),s=NULL) としておくと, ブロック構文のように使える.
  • 1