gpt4 book ai didi

constructor - 如何将构造函数添加到 Julia 中的类型别名?

转载 作者:行者123 更新时间:2023-12-01 00:33:21 25 4
gpt4 key购买 nike

我有一个类型 Milkshake ,其中包含 flavor field 。我想要另一种类型,Order ,它只包含一个列表 Milkshake s;因此,我使用了 typealias .

julia> VERSION
v"0.5.1"

julia> type Milkshake
flavor::String
end

julia> typealias Order Array{Milkshake, 1}
Array{Milkshake,1}

julia> Order([Milkshake("Chocolate"), Milkshake("Vanilla")])
2-element Array{Milkshake,1}:
Milkshake("Chocolate")
Milkshake("Vanilla")

我想给 Order 添加一个构造函数,不过,这样我就可以通过简单地使用 flavor 来初始化订单字符串。但是,当我尝试定义执行此操作的构造函数时,该定义奇怪地返回类型 Array{Milkshake, 1} .
julia> Order(milkshakes::String...) = Order(map(Milkshake, milkshakes))
Array{Milkshake,1}

运行时,会产生以下错误。
julia> Order("chocolate", "vanilla")
ERROR: MethodError: Cannot `convert` an object of type Tuple{Milkshake,Milkshake} to an object of type Array{Milkshake,1}
This may have arisen from a call to the constructor Array{Milkshake,1}(...),
since type constructors fall back to convert methods.
in Array{Milkshake,1}(::String, ::String) at ./REPL[3]:1

如何将此构造函数添加到 Order typealias ?

最佳答案

Order(milkshakes::String...) = Order(map(Milkshake,collect(milkshakes)))作品。

定义了它后,可以按如下方式构造 Order:

julia> Order("Chocolate","Vanilla")
2-element Array{Milkshake,1}:
Milkshake("Chocolate")
Milkshake("Vanilla")

关于constructor - 如何将构造函数添加到 Julia 中的类型别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43026062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com