Swift 如果字符串.Index未定义,则快速查找
我想知道我的变量中点是否未定义。不幸的是,下面的代码无法编译Swift 如果字符串.Index未定义,则快速查找,swift,Swift,我想知道我的变量中点是否未定义。不幸的是,下面的代码无法编译 let midPoint : String.Index if (typeof midPoint === "undefined" ) {print ("undefined")} 类型 不起作用,也不起作用 类型 这里的代码是Javascript,不会编译。Swift没有未定义的。斯威夫特拥有的是期权。(由类型后面的?指示)。下面的代码大致就是您所做的: let midPoint: String.Index? = nil if
let midPoint : String.Index
if (typeof midPoint === "undefined" )
{print ("undefined")}
类型
不起作用,也不起作用
类型
这里的代码是Javascript,不会编译。Swift没有未定义的
。斯威夫特拥有的是期权。(由类型后面的?
指示)。下面的代码大致就是您所做的:
let midPoint: String.Index? = nil
if midPoint == nil {
print ("midPoint is nil")
}
Swift不允许使用未定义的值,因此中点必须设置为nil
(或一个值)
如果获得的值不是选项,则不必测试nil
,因为不可能是nil
。例如:
let index = "Hello world".endIndex
这里,endIndex
的类型是String.Index
,因此您知道总会有一个值
let index = "Hello world".firstIndex(of "t")
在这里,您必须在使用之前“检查”该值(将其展开),因为返回类型String.Index?
,是可选的。你是这样做的:
if let index = index {
// you can use index here
}
你的意思是
如果middpoint==nil
?Swift不是JavaScript,为什么要使用相同的语法和方法?Swift中没有类型未定义的
,编译器不会让您保留任何未初始化的值,因此使用未定义的
类型是没有意义的。@meggar Expression type'()->在没有更多上下文的情况下是不明确的,但在我给它一个值之前中点是未定义的。不,Swift中没有未定义的东西。在初始化时,每个属性都必须有一个值。如果定义一个属性而不给它一个初始值,它必须在保存该属性的类型的初始化器中获取一个值。