I find myself thinking in common OOP terms and trying to have object representing a model that has some method to do something to outside data.
So I thought, in Julia, the model should likely be a struct and the method should accept the struct as an argument.
The simplified example I can come up with:
mutable struct CarModel
# some car properties
consumption
end
function predict_consumption(carmodel, distance)
return carmodel.consumption*distance
end
myCar = CarModel(10)
consumption_values = predict_consumption(myCar, 10)
However, when doing so, I cannot use dot-broadcasting on the input data
distances = 0:100
consumption_values = predict_consumption.(myCar, distances)
ERROR: LoadError: MethodError: no method matching length(::CarModel)
I can fully imagine, that this is the most sensible behavior, since Julia cannot find out if myCar is to be broadcasted on or if it is a scalar.
Is there some elegant or commonly used approach for such a scenario of mimicking mehtods inside objects by functions taking structs + actual parameters?