Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如果字符串.Index未定义,则快速查找_Swift - Fatal编程技术网

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中没有未定义的东西。在初始化时,每个属性都必须有一个值。如果定义一个属性而不给它一个初始值,它必须在保存该属性的类型的初始化器中获取一个值。