Swift 语法错误和 init()?
Posted
技术标签:
【中文标题】Swift 语法错误和 init()?【英文标题】:Swift Syntax Error and init()? 【发布时间】:2015-12-19 09:11:15 【问题描述】:我学得很快。我对初始化器有疑问 init()
.
比如我要初始化 Int。
var number: Int = 20
var number = Int(20)
var number = Int.init(20)
所有的表达方式都一样? 二、为什么会出现这种表达方式?
var check = "123"
var phoneNum:Int?
if((phoneNum = Int.init(check)) != nil)
print("Success");
没有错误!
var check = "123"
var phoneNum:Int? = Int.init(check)
if(phoneNum != nil)
print("Success");
【问题讨论】:
为什么会出现错误? Swift 不是 C。在 Swift 中,赋值不会产生值。 我觉得 Swift 像 C。我努力学习 Swift!感谢您的评论。 【参考方案1】:是的,这些都具有相同的效果:
var number: Int = 20
var number = Int(20)
var number = Int.init(20)
这是另一种方法:
var number = 20
这会产生错误:
var check = "123"
var phoneNum:Int?
if((phoneNum = Int.init(check)) != nil)
print("Success");
你得到一个错误(“错误:'()' 类型的值永远不能为零,不允许比较”)因为 Swift 中的赋值返回 ()
,这是 Void 类型的唯一值,但 nil
是 Optional 类型,与 Void 不同。 Swift 中的赋值通常不能用作表达式。
【讨论】:
【参考方案2】:我想将此作为评论添加到rob 的答案中,但由于我没有足够的声誉,所以我的答案是?评论(双关语;)。
关于最后两个示例,您还可以使用optional binding 来帮助完成作业:
var check = "123"
var phoneNumber: Int?
if let number = Int.init(check)
phoneNumber = number
print("Success")
print(phoneNumber)
// Success
// Optional(123)
更改check
值:
var check = "A23"
var phoneNumber: Int?
if let number = Int.init(check)
phoneNumber = number
print("Success")
print(phoneNumber)
// nil
我希望这也有帮助。
【讨论】:
以上是关于Swift 语法错误和 init()?的主要内容,如果未能解决你的问题,请参考以下文章
在 kivymd 的 __init__.py 文件中出现语法错误
将代码更新为最新的 Swift 4 语法会导致“线程 1:致命错误:索引超出范围”错误
如何使用 Swift #selector 语法解决“歧义使用”编译错误?
Swift cocoapod install framework (Alamofire) 在 xcode 中出现语法错误