我对参数类型的内部构造函数中的类型注释感到有点困惑.
在JIT推理效率和运行时效率方面,以下4种方法有什么不同吗?
immutable MyType{T}
x::T
MyType{T}(x::T) = new{T}(x + x)
end
immutable MyType{T}
x::T
MyType(x::T) = new{T}(x + x)
end
immutable MyType{T}
x::T
MyType(x::T) = new(x + x)
end
immutable MyType{T}
x::T
MyType{T}(x::T) = new(x + x)
end
Run Code Online (Sandbox Code Playgroud)
他们都为之努力 x = MyType{Int}(1)
根据杰夫在这里的回答:
问题 1:如果类型名称为 X,并且构造函数的形式为 function X{...}(...),则 X 后面的花括号中的内容将传递给 new。
问题2:为了创建一个实例,类型参数必须有确定的值,因此new(...)总是等价于一些new{...}(...)。他们会降低到完全相同的程度。
它们是完全相同的。你的最后一个例子是一个规范模式:
struct MyType{T}
x::T
MyType{T}(x::T) = new(x + x)
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
202 次 |
| 最近记录: |