2016-09-30 3 views
-6

Python, Java und Scala haben ternäre Operatoren. Was ist das Äquivalent in Julia?Hat Julia einen ternären Bedingungsoperator?

+3

Können Sie einen Versuch einfügen? Ich dachte, es sei dasselbe wie in C, C++ und Java. (Ich dachte auch, dass Scala 'if',' else' verwendet). – Bathsheba

+2

Siehe [hier] (http://web.mit.edu/julia_v0.3.11/.julia-483dbf5279.amd64_ubuntu1404/share/julia/doc/_build/html/manual/control-flow.html) – Ahmad

+6

http: // stackoverflow.com/documentation/julia-lang/4356/conditionals/15210/tarly-conditional-operator#t=201609301108357883321 – JJJ

Antwort

4

Für die Inline-Verwendung, ein? b: c existiert, wie in der vorherigen Antwort erwähnt. Es ist jedoch erwähnenswert, dass das If-else-end in Julia genauso funktioniert (wenn cond expr1 expr2) in den meisten Lisp-Dialekten, die sowohl als if-Klausel als auch als ternärer Operator fungieren. Daher gibt if-then-else den Rückgabewert des Ausdrucks zurück, der ausgeführt wird.

Bedeutung, dass Sie Dinge wie

function abs(x) 
    if x > 0 
     x 
    else 
     -x 
    end 
end 

schreiben kann, und dies wird zurückkehren, was Sie wollen. Sie müssen nicht eine return-Anweisung verwenden, um den Funktionsblock zu unterbrechen. Sie geben nur den Wert zurück, der vom if-Block zurückgegeben wird.

Inline, können Sie

if (x > 0) x else -x end 

schreiben, die die gleiche Sache wie der ternäre Operator Ausdruck (x> 0) zurückkehren wird? x: -x, aber hat den Vorteil, Perl-ish?: Symbole zu vermeiden und ist im Allgemeinen besser lesbar. Die meisten Sprachen haben einen ternären Operator, der von if-then-else getrennt ist, da if-Klauseln Anweisungen sind, während sie in lisp-ähnlichen Sprachen Ausdrücke wie alles andere sind und einen Rückgabewert haben.

9

Beziehen Sie sich auf this?

a = true 
b = 1 
c = 2 

julia>a ? b : c 
1 

a = false 

julia>a ? b : c 
2 
Verwandte Themen