2015-10-18 8 views

risposta

13

Il tipo di funzioni che è possibile utilizzare nelle protezioni è piuttosto limitato.

http://elixir-lang.org/getting-started/case-cond-and-if.html

Una gamma è una struttura che sono le mappe, in modo da poter utilizzare la funzione is_map .

iex(1)> foo = 1..3 
1..3 
iex(2)> is_map(foo) 
true 

Un Range è una mappa che assomiglia %{ __struct__: Range, first: 1, last: 3}

Tuttavia, c'è un modo migliore per realizzare ciò che si desidera utilizzando modello corrispondente in args funzione piuttosto che guardie.

def fun(%Range{} = range) do 
    Map.from_struct(range) 
end 

Questo corrisponderà solo a una Range Struct, non a nessuna mappa.

0

Per verificare se un valore è membro di un intervallo, è possibile utilizzare in.

def is_high?(number) when number in 50..100 do true end

funziona questo anche per verificare l'adesione di elementi nelle liste def is_a_great_number?(number) when number in [5,7,11] do true end

mi rendo conto che questo non era la tua domanda, ma questa è la risposta che cercavo quando ho trovato questa domanda.

Problemi correlati