I read a post on towardsdatascience:
It used something that looks to me like an anonymous type, which I don’t know exists:
mutable struct car_stats
honda_civic = car_stats(25, 40, nothing)
mph = carstat.distance / carstat.time
typemaker(speedfunc,civic) = ()->(speedfunc;civic)
d = typemaker(speed,honda_civic)
The question is, why would this even work? What is the anonymous function’s return value (speedfunc;civic)? Why a function that returns this thing can be used as if it’s a user defined type (struct)?
An explanation and/or link to the relevant document will be appreciated!
This example is somewhat contrived…
It works by creating a closure which is an anonymous function. Internally, anonymous functions capture the various variables referenced within.
Here even though the anonymous function
()->(speedfunc;civic) simply returns
civic (it doesn’t do anything with
speedfunc), both variables are still captured (and accessible by dot notation, like structs).
For this example, there is no reason to have the
typemaker function which returns an anonymous function. All of the info is already captured in the type
car_stats. Instead of calling
d.speedfunc(d.civic), just call
If there is a need for some object to store the speedfunc and the car, as is done by the closure, a better way would be to simply create a tuple
(speedfunc,civic), or simply create another type.
Thank you! This is quite interesting…