- Offizieller Beitrag
Standardmäßig ist in Nim kein Ternärer Operator implementiert. Ich habe dazu etwas gefunden:
Code
type
ConditionPair[T] = object
ifTrue, ifFalse: T
proc `!`*[T](a, b: T): ConditionPair[T] {.inline.} = ConditionPair[T](ifTrue: a, ifFalse: b)
template `?`*[T](cond: bool; p: ConditionPair[T]): T =
(if cond: p.ifTrue else: p.ifFalse)
# Example
let
a = 5
b = 7
echo (a < b ? a ! b)
# output: 5
Alles anzeigen
":" lässt sich nicht überladen, deshalb "!". "a" und "b" müssen selbstverständlich vom selben Typ sein.