如何在Julia中对结构变量进行硬编码?

时间:2019-02-19 19:05:03

标签: julia

我有一个Julia结构:

struct WindChillCalc
    location::Tuple;
    w_underground_url::String;

    WindChillCalc(location, wug) = new(location, w_underground_url);
end

在调用WindChillCalc的构造函数时,如何对w_underground_url进行硬编码以包含“ someString”?

2 个答案:

答案 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将会知道结构中所有字段的确切类型。