如果你这些就是常数,初始化后无需修改,而且 你不会用到手工指定 α 的情况,那就用内部构造器+不可变(默认)。
struct MoldCarrier
R1::Complex # 模架固定杆
r2::Real # 模架摆杆长度
r3::Real # 模架连杆长度
r4::Real # 模架连杆长度
dh::Real #
r5::Real # 摆臂连杆长度
R6::Complex # 旋转中心至模架矢量
r7::Real # 开合模向径初始长度
α::Real # 模架角度常数
MoldCarrier(R1, r2, r3, r4, dh, r5, r6, r7) =
new(R1, r2, r3, r4, dh, r5, r6, r7, asin(dh / r4) + π / 2)
end
julia> struct MoldCarrier
R1::Complex # 模架固定杆
r2::Real # 模架摆杆长度
r3::Real # 模架连杆长度
r4::Real # 模架连杆长度
dh::Real #
r5::Real # 摆臂连杆长度
R6::Complex # 旋转中心至模架矢量
r7::Real # 开合模向径初始长度
α::Real # 模架角度常数
MoldCarrier(R1, r2, r3, r4, dh, r5, r6, r7) =
new(R1, r2, r3, r4, dh, r5, r6, r7, asin(dh / r4) + π / 2)
end
julia> MoldCarrier(1,2,3,4,0,5,6,7)
MoldCarrier(1 + 0im, 2, 3, 4, 0, 5, 6 + 0im, 7, 1.5707963267948966)
julia> methods(MoldCarrier)
# 1 method for type constructor:
[1] MoldCarrier(R1, r2, r3, r4, dh, r5, r6, r7) in Main at REPL[1]:12
julia> MoldCarrier(1,2,3,4,0,5,6,7, 0.0)
ERROR: MethodError: no method matching MoldCarrier(::Int64, ::Int64, ::Int64, ::Int64, ::Int64, ::Int64, ::Int64, ::Int64, ::Float64)
但我发现你写的那个其实是能用的。
你初始化报什么错?