2016-06-25 23 views

risposta

7

Per me, la se IS l'equivalente di un operatore ternario in quanto restituisce un valore che, per varie altre lingue doesn' t.

così x = if false, do: 1, else: 2

è fondamentalmente x = false? 1 : 2

Non certo perché Rubino adottato (se si proviene da Ruby) in quanto ha assegnabile if. in C il ternario è utile in quanto il codice si gonfia con le istruzioni if ​​equivalenti. Certamente i programmatori C cercano disperatamente che la chiarezza diventi pazza e ha fatto molti annidamenti su ternari nidificati :)

+1

http://elixir-examples.github.io/examples/ternary –

10

Sì, non c'è niente come un operatore ternario in Elixir. La versione di parola chiave di if è probabilmente la cosa più vicina.

if condition, do: true_expr, else: flase_expr 
+0

per favore, fai un esempio di cosa intendi. –

4

ho visto questa alternativa in un tweet,

is_it_true && "TRUE" || "FALSE" 
+4

Si noti che questo ha un grande trucco: 'is_it_true && false || : foobar 'restituirà sempre': foobar' e mai 'false'. Questo perché 'x && false' valuterà sempre un valore falsy, per qualsiasi valore di' x' - e 'false || x' valuterà sempre a 'x', per qualsiasi valore di' x'. Lo stesso trucco si applica se hai 'nil' invece di' false'. –

+0

'a = true && 1 || 2', non vedo il gotcha qui se lo strutturi bene. – Besto