Saltar al contenido

Convertir Int a Bool

Si hallas algún error en tu código o trabajo, recuerda probar siempre en un ambiente de testing antes subir el código al proyecto final.

Solución:

No, existe y nunca ha existido una opción incorporada explícita para la conversión de Int a Bool, vea la referencia de lenguaje para Bool para detalles.

Todavía existe, sin embargo, un inicializador por NSNumber. La diferencia es que el puente implícito entre el tipo numérico de Swift y NSNumber se ha eliminado en Swift 3 (que anteriormente permitía lo que parecía ser explícito Bool por Int inicialización). Todavía puede acceder a esto por NSNumber inicializador realizando explícitamente la conversión de Int a NSNumber:

let number = 1
let result = Bool(number as NSNumber)

print(result) // true

Como @Hamish escribe en su comentario a continuación: si dejamos el tema de los inicializadores y solo nos enfocamos en el resultado final (crear una instancia de un Bool instancia dado el valor de un Int ejemplo) podemos simplemente hacer uso de la != operador de Int valores (en concreto, el operador con firma func !=(lhs: Int, rhs: Int) -> Bool), una generalización fácilmente alcanzable usando el != enfoque del operador:

let number = -1
let result = number != 0

print(result) // true

Al igual que usted mismo, así como @JAL describe en su respuesta, podría construir su propia Bool por Int inicializador, pero también podría considerar generalizar esto para cualquier tipo que se ajuste a la Integer protocolo:

extension Bool 
    init(_ num: T) 
        self.init(num != 0)
    


/* example usage */
let num1: Int8 = -1
let num2: Int = 3
let num3: UInt64 = 0
// ....
let result1 = Bool(num1) // true
let result2 = Bool(num2) // true
let result3 = Bool(num3) // false

rápido 4

extension Int 
    var boolValue: Bool  return self != 0 

rápido 3

extension Integer 
    var boolValue: Bool  return self != 0 

Uso

let number = 2
print(number.boolValue)

let items = ["1"]
print(items.count.boolValue)

No existe un inicializador booleano que tome una Int, solo NSNumber. Anteriormente, el Int estaba implícitamente conectado a NSNumber a través de Foundation, pero eso se eliminó en Swift 3.

Puedes hacer algo como:

let result = Bool(number as NSNumber)

O bien, puede ampliar Bool y cree un inicio personalizado que tome un Int:

extension Bool     
    init(_ number: Int) 
        self.init(number as NSNumber)
    

Si te animas, eres capaz de dejar un escrito acerca de qué te ha gustado de este ensayo.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *