gpt4 book ai didi

swift - 在 Swift 中进行类型检查

转载 作者:搜寻专家 更新时间:2023-11-01 05:59:29 24 4
gpt4 key购买 nike

我无法执行我认为应该工作的以下类型检查:

var str:String?

//Compiler error: Downcast from 'String?' to 'String' only unwraps optional; did you mean to use '!'?
if str is String {

}

//Compiler error: is test is always true
if str! is String {
println("str is optional string")
}

最佳答案

来自 "Type-Casting Operators"在 Swift 文档中(强调我的):

The is operator checks at runtime whether the expression can be downcast to the specified type. It returns true if the expression can be downcast to the specified type; otherwise, it returns false. If casting to the specified type is guaranteed to succeed or fail, a compile-time error is raised.

String 不是 String?String 的正确子类,因此 此处不能使用运算符。并检查 str 是否有一个可以使用的值一个可选的赋值:if let theString = str { ... }

工作示例:

class A { }
class B : A { }

func foo(a : A) {
if a is B {
// a is an instance of the B subclass
}
}

func bar(obj: AnyObject) {
if obj is NSNull {
// The Null object
}
}

在许多情况下,条件转换 as? 更有用,因为它返回一个指定类型的值:

func foo(a : A) {
if let b = a as? B {
// ...
}
}

关于swift - 在 Swift 中进行类型检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25612441/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com