我前段时间买了《D语言编程》这本书。很不错,很有教育意义。但我在尝试编译书中列出的一种语言特性 - 扩展函数时遇到困难。
在书中,Andrei写到任何函数(a,b)都可以像这样被调用:a.function(b)。所以我应该能够这样做:
在书中,Andrei写到任何函数(a,b)都可以像这样被调用:a.function(b)。所以我应该能够这样做:
struct Person {
string name;
}
void foo(Person person, string name) {
person.name = name;
}
void main() {
auto bob = Person();
bob.foo("Bob Dole"); // ERROR: Person does not have method 'foo'
}
这样理解是正确的吗?这个特性还没有实现,还是我漏掉了什么?我注意到导入std.range会为数组添加方法,所以在某种程度上似乎已经实现了。
length(a)
代替a.length
真的有这么大的问题吗? - Peter Alexandersplit(array, ",").map!"fun"().join()
来替换join(map!"fun"(split(array, ",")))
。你可以创建像这样长的链式操作,并使用换行符使代码看起来更加简洁易读。 - Justin W