Re: [julia-users] Re: Finding the index of a type member

2015-09-10 Thread J Luis
Thanks too. I have to start studying the c api as well.

quinta-feira, 10 de Setembro de 2015 às 03:06:03 UTC+1, Yichao Yu escreveu:
>
> On Wed, Sep 9, 2015 at 9:27 PM, Luke Stagner  > 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 
>


[julia-users] Re: Finding the index of a type member

2015-09-09 Thread elextr
>From 
>http://docs.julialang.org/en/latest/manual/arrays/#vectorized-operators-and-functions
> 
"
Note that comparisons such as == operate on whole arrays, giving a single 
boolean answer. Use dot operators for elementwise comparisons."

On Thursday, September 10, 2015 at 11:36:15 AM UTC+10, J Luis wrote:
>
> Thanks. I had tried variations about this theme but expecting that the 
> '==' operator would expand for the number of elements.
>
> quinta-feira, 10 de Setembro de 2015 às 02:27:11 UTC+1, Luke Stagner 
> escreveu:
>>
>> 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)
>> ```
>>
>> 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
>>>
>>

Re: [julia-users] Re: Finding the index of a type member

2015-09-09 Thread Yichao Yu
On Wed, Sep 9, 2015 at 9:27 PM, Luke Stagner  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


[julia-users] Re: Finding the index of a type member

2015-09-09 Thread Luke Stagner
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)
```

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
>


[julia-users] Re: Finding the index of a type member

2015-09-09 Thread J Luis
Thanks. I had tried variations about this theme but expecting that the '==' 
operator would expand for the number of elements.

quinta-feira, 10 de Setembro de 2015 às 02:27:11 UTC+1, Luke Stagner 
escreveu:
>
> 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)
> ```
>
> 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
>>
>