Именованные кортежи параметризованы именами и кортежем:
julia> struct Circle{T <: Real}
R::T
C::NamedTuple
Circle(r::T, c::NamedTuple{N,Tuple{T,T}}) where {N, T <: Real} = new{T}(r,c)
end
julia> Circle(1, (a=1, b=2))
Circle{Int64}(1, (a = 1, b = 2))
Если вы хотите создать Circle
с кортежем, вы можете предоставить отображение по умолчанию:
julia> function Circle(r::T, c::Tuple{T,T}) where {T <: Real}
a, b = c
return Circle(r, (a=a, b=b))
end
Circle
julia> Circle(1, (1, 2))
Circle{Int64}(1, (a = 1, b = 2))
Если вам не нужны именованные кортежи, вы можете использовать обычные кортежи:
julia> struct Circle{T <: Real}
R::T
C::Tuple{T, T}
end
julia> Circle(1, (1, 2))
Circle{Int64}(1, (1, 2))