2012-06-10 18 views
10

capisco come definire un intervallo di matrice in CoffeeScriptTrovare un intervallo in CoffeeScript

lng[1..10] 

Tuttavia se ho

data = 10 

Qual è il modo migliore per trovare se il 10 è all'interno di un intervallo di 1 e 11?

if data is between(1..11) 
    return true 

risposta

18

Non c'è un "tra" parola chiave, ma è possibile utilizzare un normale array gamma:

if data in [1..11] 
    alert 'yay' 

Ma questo è un po 'un peso inutile, così nei casi più semplici mi consiglia un normale confronto:

if 1 <= data <= 11 
    alert 'yay' 
+0

è fantastico, ho pensato di farlo non sapendo se c'era un rubino come call of between? - Grazie!! –

+1

+1, con gli operatori di confronto concatenati in CoffeeScript diventa molto leggibile = D – epidemian

2

Se non ti dispiace inquinare i prototipi nativi, è possibile aggiungere un metodo between agli Number oggetti:

Number::between = (min, max) -> 
    min <= this <= max 

if 10.between(1, 11) 
    alert 'yay' 

Anche se personalmente non lo userei. if 1 <= something <= 11 è più diretto e tutti lo capiranno. Il metodo between, invece, deve essere cercato se vuoi sapere cosa fa (o dovresti indovinare), e penso che non aggiunga molto.