I understand your question, I’m just thinking is it a mistake or anti-pattern to ever do this? So do you have a more concrete example/reason to do this?
If it’s just out of curiosity, and possibly unfamiliarity with Julia (it’s not clear for how long you’ve used Julia), then FYI: struct
s are immutable (by default) in Julia, ALSO, strictly, in the answers given. I used to like that Julia is an imperative language, i.e. not a pure functional by default.
Maybe @nben’s package can help you:
I can’t recommend Hickey’s talk highly enough on what’s wrong with almost all “information” systems (regarding what he calls place-oriented programming, which implies imperative, almost a synonym, it seems imperative is maybe more general, on how to implement the former).
If it seems long, or you only have a limited amount of time, I recommend giving it a change for even just the first 3-18 min. to see if it’s of interest.
I watched this talk recently, and then immediately again it’s that good, I would say required for all programmers. Note, do not watch it full-screen. I missed out on the slides the first time. That was only part of the reason to watch again, to check if I missed something there. I wouldn’t say it was needed, it was all very clear.
Julia immutable be default in lots of ways, strings, structs, but not arrays/containers, e.g. Dict
s. but Air.jl fixes that for all (included in the standard library, in both missing mainly ordered Dict
s), the important data structures and arrays
You have a typo cont->const, consider editing your post and doing this way:
julia> mutable struct Foo
x::Int
__y::Int
end
Then x is mutable, more like in C++, while actually __y too (but __ prefix means stay away), i.e. the whole struct
. Yes, that’s place-oriented-programming (PLOP)… what you aim for is only half that, a half-sin, and I’m not really sure it’s better. So also consider fully immutable, the default, that you can still use with arrays, but then again you’re back to PLOP. PArray
would fix that.