Mit dem rubin ternären Operator wir die folgenden Logik für ein einfaches, wenn anderes Konstrukt schreiben:Ruby if .. elsIf .. sonst in einer einzigen Zeile?
a = true ? 'a' : 'b' #=> "a"
Aber was, wenn ich dies als if foo 'a' elsif bar 'b' else 'c'
schreiben wollte? Gibt es bessere Möglichkeiten für den Umgang mit, ein solches Szenario oder ist dies unsere beste Wette
foo = true
a = foo ? 'a' : (bar ? 'b' : 'c') #=> "a"
foo = false
bar = true
a = foo ? 'a' : (bar ? 'b' : 'c') #=> "b"
wenn wir, wenn kondensieren wollen:
ich es als die folgende schreiben könnte, aber es ist ein wenig schwierig zu folgen. .elsif..elogic in eine einzige Zeile?
Ich denke, das Problem mit der mangelnden Lesbarkeit in der verschachtelten ternären Lösung ist, dass alles in einer Zeile zu schreiben ist inhärent schwierig zu lesen, und keine der Lösungen, die Sie kommen mit wird viel einfacher zu analysieren. –
In anderen Worten, mit mehr Erfahrung werden Sie lernen, dass das Komprimieren von so viel Code wie möglich in einem kleinen Raum niemals ein gültiges Ziel ist. –
"so viel Code wie möglich in einen kleinen Raum zu drücken, ist niemals ein gültiges Ziel." außer im Maschinencode. –