Aliasメソッド
最近追加された(ている)マクロのご紹介。
using System; using Nemerle; module M { // 引数x,yを逆に渡した関数に別名GreaterThanを付ける [Alias (GreaterThan(y,x))] public static LessThan (x : int, y : int) : bool { x < y } public static Main () : void { def x = 10; def y = 20; when (LessThan (x, y)) Console.WriteLine ($"$x < $y"); // これは偽 when (GreaterThan (x, y)) Console.WriteLine ($"$x > $y"); when (GreaterThan (y, x)) Console.WriteLine ($"$y > $x"); } } /* 結果 10 < 20 20 > 10 */
見ての通り、LessThanメソッドの引数を逆にしたGreaterThanメソッドを自動生成しています。別名を付けるときは引数の順番を変える、もしくは、引数の数を変える(1つ減らす)ことが出来るようです。引数を減らした場合は、第一引数にthisが渡され、クラスメソッドがインスタンスメソッドに変更されます。