If do not exactly understand what you want to achieve.
If you define the * operator for a T3{T}
like this:
struct T3{T}
x::T
y::T
z::T
end
import Base.*
function (*)(t3::T3{T}, n::Number) where {T}
return T3{T}(t3.x*n,t3.y*n,t3.z*n)
end
Then you can write:
julia> t=T3{Float64}(3,4,5)
T3{Float64}(3.0, 4.0, 5.0)
julia> t*5
T3{Float64}(15.0, 20.0, 25.0)
This can be broadcasted for a collection of t3
:
julia> vt=[T3{Float64}(1,2,3),T3{Float64}(4,5,8),T3{Float64}(7,8,9)]
3-element Array{T3{Float64},1}:
T3{Float64}(1.0, 2.0, 3.0)
T3{Float64}(4.0, 5.0, 8.0)
T3{Float64}(7.0, 8.0, 9.0)
julia> vt.*=5
3-element Array{T3{Float64},1}:
T3{Float64}(5.0, 10.0, 15.0)
T3{Float64}(20.0, 25.0, 40.0)
T3{Float64}(35.0, 40.0, 45.0)