如何在Julia对象中声明变量的类型?

时间:2017-05-30 07:41:51

标签: object types julia declaration

如何在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)的输出。虽然这个声明还不太长,但Base.product超过两个Linspace对象很快变得非常冗长。在浏览了Julia关于Types的文档后,我想我正在寻找supertype foobar。但是,我不知道如何获得它。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

  1. 可以通过supertype访问超类型。在这种情况下,supertype(typeof(foobar))Base.Iterators.AbstractProdIterator
  2. 您需要多少专业化取决于您需要的专业功能。您可以轻松地最终专门化这种类型。在这种情况下,您可以省略类型参数,只需foobar::Base.Iterators.Prod2
  3. 我不确定为什么完整类型不漂亮 - 这是一种非常简洁的方式来描述类型要求,如果您要求类型受到如此限制。