On Wed, Sep 9, 2015 at 9:27 PM, Luke Stagner <[email protected]> wrote:
> Firstly, instead of using ```symbol("is_continuous")``` you can use the
> colon notation ```:is_continuous```. Secondly, you can do element wise
> comparison by using ```.==``` operator. This will return a BitArray. You can
> then find where the BitArray is true by using the ```find``` function which
> returns an array of indices.
>
> So for your case all you would need to do is
> ```
> index = find(fn .== :is_continuous)
> ```
>

findfirst(fn, :is_continuous)

There's also the c api jl_field_index that can be called with
`ccall(:jl_field_index, Cint, (Any, Any, Cint), GMT_PALETTE,
:is_continuous, 1) + 1`

>
> On Wednesday, September 9, 2015 at 6:01:47 PM UTC-7, J Luis wrote:
>>
>> So I need to find position of a certain type member in a type. Easy, I
>> though
>>
>> julia> fn = fieldnames(GMT_PALETTE)
>> 9-element Array{Symbol,1}:
>>  :n_headers
>>  :n_colors
>>  :alloc_level
>>  :auto_scale
>>  :model
>>  :is_gray
>>  :is_bw
>>  :is_continuous
>>  :z_unit_to_meter
>>
>> julia> search(fn,"is_continuous")
>> ERROR: MethodError: `search` has no method matching
>> search(::Array{Symbol,1}, ::ASCIIString)
>> Closest candidates are:
>>   search(::AbstractString, ::AbstractString)
>>   search(::AbstractString, ::AbstractString, ::Integer)
>>
>> Went to the docs and found the "symbol" function and though, ok now it
>> will work
>>
>> julia> search(fn,symbol("is_continuous"))
>> ERROR: MethodError: `search` has no method matching
>> search(::Array{Symbol,1}, ::Symbol)
>>
>> Ok, I can do a loop over the number of elements and ask
>>
>>     fn[k] == symbol("is_continuous")
>>
>> but isn't there a more compact way of do this ?
>>
>> (I confess this parts of Julia are annoying)
>>
>> Thanks

Reply via email to