作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这个斐波那契数生成器。
struct FibonacciSeries
{
int first = 0;
int second = 1;
enum empty = false;
@property int front() const
{
return first;
}
void popFront()
{
int third = first + second;
first = second;
second = third;
}
@property FibonacciSeries save() const
{
return this;
}
}
这个结构没有take
方法,所以我在执行这个命令时出现这个错误(writeln(FibonacciSeries().take(5))
)。
a.d(66): Error: no property 'take' for type 'FibonacciSeries'
但是,通过导入range
包,它有take
方法。这背后的机制是什么?
最佳答案
机制是统一函数调用语法:
http://dlang.org/function.html#pseudo-member
简单来说,如果 a.foo(b...)
无效,编译器会尝试将其重写为 foo(a, b...)
.
关于import - 如何仅在 D 中导入包来扩展结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29109285/
我是一名优秀的程序员,十分优秀!