Here is some code: https://gist.github.com/SimonDanisch/805fee6b676107e378ae#file-setindex-jl
Am Sonntag, 8. Februar 2015 21:35:20 UTC+1 schrieb [email protected]: > > I would like to request the following language feature: a function or > macro to modify a field of an immutable inside a container. Consider: > > immutable T > fielda::Int > fieldb::Int > fieldc::Int > end > > function modify_fieldc!(x::Array{T,1}, sub::Int, newc::Int) > x[sub] = T(x[sub].fielda, x[sub].fieldb, newc) > end > > This function modifies one field of an immutable object that sits inside a > container. The above construct, namely: > x[sub] = T(x[sub].field1, x[sub].field2, ... , newval, ... > x[sub].fieldn) > occurs rather frequently in my code. It is not very readable and is also > fragile in the case that I modify my code and put more fields in T later. > It would be much nicer if there were a universal function like this: > modifyField!(x, sub, fieldc, newc) > > Note that I declared T to be 'immutable' rather than 'type' for > performance reasons-- I prefer the data in the array x to be packed in > memory rather than accessed with pointers. If T were a 'type' then > obviously the problem would go away. > > Maybe it is already possible to write a function or macro for this purpose > in the existing language? > > Thanks, > Steve Vavasis > >
