我想定义一个结构:
struct unit_SI_gen
x::Float32
const c = 2.99792458e8
speed(x)=c*x
end
但是,它会引发错误:
syntax: "c = 2.99792e+08" inside type definition is reserved
我知道我不能在python中使用struct作为类,但是我找不到解决该问题的方法。
如何在struct中定义常量?
答案 0 :(得分:4)
鉴于我同意上面提到的关于Julia中struct
的正常用法的说法,实际上可以使用内部构造函数定义问题中的要求:
struct unit_SI_gen{F} # need a parametric type to make it fast
x::Float32
c::Float64 # it is a constant across all unit_SI_gen instances
speed::F # it is a function
function unit_SI_gen(x)
c = 2.99792458e8
si(x) = c*x
new{typeof(si)}(x, c, si)
end
end
答案 1 :(得分:3)
我第二个@Tasos的评论,您应该首先使自己熟悉Julia的结构。该文档的相关部分可能是here。
由于您将结构声明为input field
(与struct
相反),因此它是不可变的,因此,该结构的所有(不可变)字段在无法更改的意义上都是常量。
mutable struct
请注意,它们在构造过程中而不是在结构定义中获得不变的值。
此外,方法通常应位于结构定义之外。