On Mon, Jun 29, 2015 at 12:10 PM, bernhard <[email protected]> wrote:
> Hi all
>
> assuming I have a composite type
>
> type MyType
> fielda::Int
> fieldb::Float64
> something::UTF8String
> end
>
> x=MyType(2,22.9,"foo")
>
>
> #I can do this
> x.fielda=-23
>
> function changefield!(x::MyType,fieldname::String,value)
>
> x.fieldname=value #this will not work.....
>
> return nothing
> end
>
>
```
julia> type T
a
b
end
julia> t = T(1, 2)
T(1,2)
julia> setfield!(t, :a, "")
""
julia> T
T
julia> t
T("",2)
```
>
>
> How can I make this function work? It should access the field "fieldname"
> and set it to the provided value.
> I am aware of names(x) . I can also map these symbols to strings.
> Can eval help me here? I am never quite sure when using eval, as I am afraid
> there could be scope issues.
>
> Thank you
> Bernhard