Merge branch 'master' of github.com:MarcusTL12/JuliaKursPVV
This commit is contained in:
27
2019/Julia/Code/11.structs2.jl
Normal file
27
2019/Julia/Code/11.structs2.jl
Normal file
@@ -0,0 +1,27 @@
|
||||
|
||||
# This is just a super simple example to illustrate the "call" operator.
|
||||
|
||||
# Simple polynomial type. The Polynomials.jl package is basically a more
|
||||
# complete version of this example.
|
||||
struct Poly{T}
|
||||
coeffs::Vector{T}
|
||||
end
|
||||
|
||||
# Could implement a whole bunch of operators (+, -, *, /, show, etc.)
|
||||
# but that can be left as an exercise for the reader :3
|
||||
# Also the Polynomials.jl package have implemented most of those.
|
||||
|
||||
# Here, the whole point of this example; This function basically makes
|
||||
# the variable, p, act as a polynomial function on x.
|
||||
function (p::Poly{T})(x::T) where T <: Number
|
||||
ret = zero(T)
|
||||
for i in 1 : length(p.coeffs)
|
||||
ret += p.coeffs[i] * x^(i - 1)
|
||||
end
|
||||
ret
|
||||
end
|
||||
|
||||
# Now any variable of type Poly can be used as if it was a function
|
||||
# This gives some really clean syntax :)
|
||||
p = Poly([0.0, -3.0, 0.0, 1.0]) # p = 0 - 3 x + 0 x^2 + 1 x^3
|
||||
@show p(3.0)
|
Reference in New Issue
Block a user