Uso de operando OR en un operador ternario Swift

¿Cómo puedo usar OR en un operador ternario? Esto es lo que trato de hacer:

let surname = name == "John" || "Jack" ? "Johnson" : "Smith"

Use corchetes y agregue name == en su segunda condición de comparación. Como pongo primero en comentar, este es el código apropiado

 let surname = (name == "John" || name == "Jack") ? "Johnson" : "Smith" 

Espero que esto ayude

Alternativamente

 let surname = ["John", "Jack"].contains(name) ? "Johnson" : "Smith" 

Use corchetes:

 let surname = (name == "John" || name == "Jack") ? "Johnson" : "Smith" 

Estos paréntesis son necesarios porque primero se quiere evaluar si el name es John o Jack antes de "pasar" ese resultado al operador ternario.

Además, al igual que en todos los idiomas tipo C, debe mencionar el name dos veces, a diferencia del código de ejemplo en su pregunta, para poder compararlo con "John" y "Jack".

Si quiere evitar nombrar el nombre dos veces, puede escribir:

 let surname = ["John", "Jack"].contains(name) ? "Johnson" : "Smith" 

Este último hace uso de la function contains() de las matrices.

Tenga en count la precedencia del operador.

Debe usar corchetes para formar una condición válida.

 let surname = (name == "John" || name == "Jack") ? "Johnson" : "Smith" 

A exception de los corchetes, también puede usar array.contains para casos con muchos nombres que podrían hacer que el código de corchete sea largo e ilegible.

 let name = "Three" let nameList = ["One", "Two", "Three", "John", "Jack", "Vlatko"] let surname = ["John", "Jack"].contains(name) ? "Johnson" : "Smith" let surnameAlternate = nameList.contains(name) ? "Johnson" : "Smith"