【发布时间】:2017-10-30 13:56:18
【问题描述】:
如何在 Julia 中的对象的构造函数中声明一个简约类型的变量?例如,考虑以下内容:
type DetermineType
foobar::Base.Prod2{LinSpace{Float64},LinSpace{Float64}}
end
function DetermineType(;foo = linspace(0, 1, 10),
bar = linspace(0, 1, 10))
foobar = Base.product(foo, bar)
return DetermineType(foobar)
end
foobar 的声明是Base.Prod2{LinSpace{Float64},LinSpace{Float64}}。我决定使用这种类型,因为它是typeof(foobar) 的输出。虽然这个声明还不算太长,但带有两个以上 Linspace 对象的 Base.product 很快就会变得非常冗长。在浏览了 Julia 关于Types 的文档后,我想我正在寻找foobar 的supertype。但是,我不知道如何获得它。有人可以帮忙吗?
【问题讨论】:
-
为什么不直接参数化呢?
-
在尝试为某些类型提供特定性能的版本时,限制参数类型通常很好。使用命名参数目前(0.5/0.6 版)会引入性能“挑战”,所以最好避免在热代码中使用
-
只是快速参数化它而不受类型限制:
type DetermineType{T} foobar::T end -
@LyndonWhite 您能简要介绍一下
{T}的含义吗?我在Constructors看到过很多次,但不明白它的意思。 -
不作为评论号。在stackoverflow上创建另一个问题,我相信你会得到一个很好的答案。 (如果尚不存在)
标签: object types julia declaration