2016-09-08 15 views
7

Bir değerin sayısal olup olmadığını belirlemek veya üzerinde bir işlev kullanmaya çalışmadan önce belirlemek istemiyorum. Spesifik bir örnek olarak:Julia'da sayısal değer nasıl denetlenir

z = [1.23,"foo"] 
for val in z 
    if isnumeric(val) 
     round(z) 
    end 
end 
İşte

isnumeric() Julia'da var sanmıyorum bir işlevdir. Bu 'un yapmasının birkaç farklı yolunu düşünebilirim, ama "en iyi" yol için bazı önerilerde bulunmak istiyorum.

+2

Kullanım durumunuz tamamen açık değildir, bu nedenle arama çağrısının kontrol edilmesi için gönderimi kullanma mantıklı olabilir. veya farklı değerler. – jverzani

cevap

9

Ben tercih deyim

isa(val, Number) 

Normalde yuvarlama yüzen ilgilenen olduğunu düşünüyorum , bu durumda

isa(val, AbstractFloat) 
8

Böyle eleman türünü kontrol edebilirsiniz:

typeof(val)<:Number 

:< operatör kontrolleri türüdür başka bir alt tipi olup olmadığını. İşte

Julia sayısal türleri tanımını veren bir çok yararlı tablosu verilmiştir: https://en.wikibooks.org/wiki/Introducing_Julia/Types

+0

Cevap olarak seçilmedi çünkü yerleşik isa() 'yi kullanmak daha iyi bir yaklaşım. Ancak, Julia tipleri diyagramına olan bağlantınız mükemmeldir. – bizzy

İlgili konular