28 lines
886 B
Julia
28 lines
886 B
Julia
|
|
||
|
# 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)
|