z Swift 4, w zależności od potrzeb, można wybrać jedną z następujących czynności Pla fragmenty yground w celu rozwiązania Twojego problemu.
# 1. Korzystanie NSNumber
„s intValue
nieruchomość
import Foundation
let integer = NSNumber(value: false).intValue
print(integer) // prints 0
# 2. Korzystanie typu odlew
import Foundation
let integer = NSNumber(value: false) as? Int
print(String(describing: integer)) // prints Optional(0)
# 3. Korzystanie Int
„s init(exactly:)
inicjator
init(exactly:)
ma następującą deklarację:
init?(exactly number: NSNumber)
Zastosowanie:
import Foundation
let integer = Int(exactly: NSNumber(value: false))
print(String(describing: integer)) // prints Optional(0)
Jako alternatywę do poprzedniego kodu, można użyć poniższy kod bardziej zwięzłe .
import Foundation
let integer = Int(exactly: false)
print(String(describing: integer)) // prints Optional(0)
# 4. Korzystanie z przepływu sterowania
Należy pamiętać, że poniższe kody nie wymagają importowania Foundation.
Wykorzystanie # 1 (if):
let integer: Int
let bool = false
if bool {
integer = 1
} else {
integer = 0
}
print(integer) // prints 0
Wykorzystanie # 2 (operator trójargumentowy):
let integer = false ? 1 : 0
print(integer) // prints 0
To kod bardzo nierealne. Dlaczego nie "let _ = false"? 1: 0' – vadian
Masz rację, to ma dużo więcej sensu, użyję tego. Dzięki! –
@Vadian - Jestem n00b. Nie rozumiem, po co zawracać sobie głowę trójpoziomowym operatorem, jeśli masz zamiar nakarmić go "fałszywie". Dlaczego nie po prostu "let _ = 0"? –