// Swift
import UIKit
let arr = [1, "a", 2.88]
let last = arr.last
if last is Int {
print("The last is Int.") // The last is Int.
} else {
print("The last is not Int.")
}
私は結果を理解できません。
「最後はIntです」と表示されるのはなぜですか?スウィフトの倍数型はIntです
// Swift
import UIKit
let arr = [1, "a", -2]
let last = arr.last
if last is Double {
print("The last is Double.") // The last is Double.
} else {
print("The last is not Double.")
}
「この最後はダブルです」。なぜですか?
誰かが私を助けることができますか?
あなたはそれほど変わりません。
>次に、値は「NSNumber」に変換されます。しかし、 'last'変数の型をチェックすると' NSNumber'ではなく 'NSObject? 'になります。 – pacification
'last'は、配列が保持する型の任意の変数を返します。配列は '[NSObject]'です。この特定のインスタンスは、NSObjectのサブクラスである2つのNSNumberとNSStringを保持します。 – vacawama
コンパイラはタイプを 'Any'または' [Any] 'に推論することは決してないと思われますので、この配列の型を推論する唯一の方法は' NSNumber'変換を使用して'[AnyObject]'または '[NSObject]'です。 'Foundation'がなければ、コンパイラはエラーを引き起こします。ただし、 '[Any]'を明示的に使用することはできます。 – Sulthan