对于D范围,front()应该是@property吗?

por*_*ton 3 iterator d properties range

当我定义我的D范围时,应该front()是@property?(或只是一个"常规"成员函数?)

Ada*_*ppe 7

是的,它应该是(正式定义isInputRange在文档中的模板下,请参阅:http://dpldocs.info/experimental-docs/std.range.primitives.isInputRange.html).

实际上,无论如何它都可以工作,但是由于文档说它并且typeof(range.front)是范围约束的常见检查,而且@property现在dmd实现中实际上会改变一件事,所以最好使用它来兼容.

现在,@property目前并没有禁止range.front()用括号来调用它,你不应该这样做,因为在将来的某个时候,@ property可能会改变以阻止这种行为.

所以是的,使用@propertyrange.front并始终将其用作最大向前兼容性的属性.