julia> type Foo
         a::Int
       end

julia> foo = Foo(3)
Foo(3)

julia> setfield(foo, :a, 5)
WARNING: setfield is deprecated, use setfield! instead.
 in setfield at deprecated.jl:8
5

julia> setfield!(foo, :a, 5)
5

julia> foo
Foo(5)


On Friday, 7 March 2014 18:35:25 UTC-3, Uwe Fechner wrote:
>
> Ok, even if overloading the dot operator is not yet implemented I would
> be pleased if someone could provide an example how to use the setfield
> function.
>
> Uwe
>
> On Friday, March 7, 2014 10:20:51 PM UTC+1, Ivar Nesje wrote:
>>
>> I do not think you can overload the . operator in Julia yet.
>> Setfield is only for calling to set the value.
>>
>> See also https://github.com/JuliaLang/julia/issues/1974 
>>
>> kl. 22:16:09 UTC+1 fredag 7. mars 2014 skrev Uwe Fechner følgende:
>>>
>>> Hello,
>>>
>>> I am looking for an example how to use the setfield function.
>>> (see: http://docs.julialang.org/en/release-0.2/stdlib/base/ )
>>>
>>> The following does not work (setfield is not called when the field time 
>>> is set):
>>>
>>> using ProtoBuf
>>> import ProtoBuf.meta
>>>
>>> type AutopilotLog
>>>     time::Float64
>>>     counter::Int32
>>>     number::Int32
>>>     AutopilotLog() = (x = new(); fillunset(x); x)
>>> end #type AutopilotLog
>>> meta(t::Type{AutopilotLog}) = meta(t, Symbol[:time,:counter], Int[], 
>>> Dict{Symbol,Any}())
>>> function setfield(value, time::Symbol, x)
>>>         x.time = value
>>>         println("abc")
>>> end
>>>
>>> log = AutopilotLog()
>>> log.time = 0.0
>>>
>>> Any hint what I am doing wrong?
>>>
>>> Regards:
>>>
>>> Uwe (using Julia 0.21)
>>>
>>

Reply via email to