我希望将一些较轻的元编程从Nemerle转移到Boo,我试图找出如何定义自定义运算符。例如,我可以在Nemerle中执行以下操作:

macro @<-(func, v) {
    <[ $func($v) ]>
}

然后这两个是等价的:

foo <- 5;
foo(5);

我无法在Boo中找到一种方法 - 任何想法?

有帮助吗?

解决方案

虽然Boo通过定义适当的静态运算符函数(op_addition)来支持运算符重载,并且还支持语法宏,但它目前不支持创建自定义运算符。

其他提示

我不确定这是否正是您所需要的,但您可以在Boo中创建语法宏。 CodeHaus网站上有一些信息, http://boo.codehaus.org/Syntactic+Macros,但在最近的一个版本中语法已经改变。我不知道有关新语法的任何教程,但是Boo 0.8.2的源代码版本有一些例子(一些语言结构是作为宏实现的)。如果您不想下载完整的源代码,可以使用SVN存储库的视图, https://svn.codehaus.org/boo/boo/trunk/src/Boo.Lang.Extensions/Macros/ 。断言宏将是一个很好的起点。

HTH

STOO

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top