我有一个Julia结构:
struct WindChillCalc
location::Tuple;
w_underground_url::String;
WindChillCalc(location, wug) = new(location, w_underground_url);
end
在调用WindChillCalc的构造函数时,如何对w_underground_url进行硬编码以包含“ someString”?
答案 0 :(得分:2)
尝试以下类似方法
struct testStruct
x::Real
y::String
testStruct(x,y) = new(x,"printThis")
end
test = testStruct(1,"")
test2 = testStruct(2,"")
println(test.y)
println(test2.y)
它将为任何对象打印“ printThis”。
答案 1 :(得分:1)
只写一个例子:
struct WindChillCalc{T}
location::T;
w_underground_url::String;
WindChillCalc(location::T) where {T <: NTuple{2, Real}} =
new{T}(location, "some string");
end
现在Julia会自动为您创建一个具体类型:
julia> WindChillCalc((1, 2.5))
WindChillCalc{Tuple{Int64,Float64}}((1, 2.5), "some string")
请注意,我已将参数类型限制为两个元素元组,其中每个元素均为Real
。您当然可以使用其他限制(或不使用限制)。
通过这种方法,您的代码将变得像编译时一样快,Julia将会知道结构中所有字段的确切类型。