Julia 中具有评估/计算属性的结构

Tom*_*hip 2 julia

我对 Julia 非常陌生,因为我昨天下载了它。我需要在我尝试启动的项目中使用结构。我需要我的对象包含作为输入一部分的属性和根据该输入计算的属性。例如,我尝试过:

struct Bar
    #Attributes from input
    E::Float64
    A::Float64
    L::Float64

    # Attributes calculated form input
    k = (E*A/L)*[1.0 -1.0; -1.0 1.0]
end
Run Code Online (Sandbox Code Playgroud)

但我收到错误:

ERROR: LoadError: syntax: "k = (((E * A) / L) * [1 -1; -1 1])" inside type definition is reserved around Untitled-1:10
Run Code Online (Sandbox Code Playgroud)

我应该如何去实现我想要的结果?

DNF*_*DNF 5

您不需要任何特殊的包或宏来执行此操作。只需在构造函数中按照标准方式进行即可。最后一个结构属性不是某种特殊的“评估属性”,它是一个完全普通的属性。

 struct Bar
    E::Float64
    A::Float64
    L::Float64
    k::Matrix{Float64}
 end
 Bar(e, a, l) = Bar(e, a, l, (e*a/l)*[1 -1; -1 1])
 
 jl> Bar(2,3,4)
 Bar(2.0, 3.0, 4.0, [1.5 -1.5; -1.5 1.5])
Run Code Online (Sandbox Code Playgroud)