いいえ、ありとBool
からInt
の変換のためのオプションで内蔵され、明示的ではありませんでした、を参照してください3210。
しかし、まだinitializer by NSNumber
が存在します。違いは、スウィフト数値タイプとNSNumber
の間の暗黙的なブリッジングが、スウィフト3で削除されていることです(これは以前はで初期化されたBool
の初期化を許可していました)。あなたはまだ明示的にInt
からNSNumber
への変換を行うことで、NSNumber
初期化することによって、これをアクセスすることができ:
let number = 1
let result = Bool(number as NSNumber)
print(result) // true
@Hamishは以下の彼のコメントに書いている:私たちは初期化子の主題を残して、ちょうど最終結果に焦点を当てた場合(インスタンス化Bool
インスタンスは、我々は単にInt
値(署名func !=(lhs: Int, rhs: Int) -> Bool
と特異的に、オペレーター)のため!=
オペレータを利用することができる)Int
インスタンスの値を与え、容易に達成!=
オペレータアプローチ用いて一般化:
をあなた自身だけでなく、
@JAL describes in his answerのような多く
、あなた自身のBool
Int
によって初期化子を構築することができますが、あなたにもInteger
protocolに準拠した任意のタイプのためにこれを一般化検討するかもしれない:
extension Bool {
init<T: Integer>(_ 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
または、obj-cブリッジなしで、 'let result = number!= 0' :) – Hamish