swift - swift 中使用 class() 和 class.init() 的区别
问题描述
为什么我们需要显式使用 init 方法,而我们可以在没有它的情况下创建对象
class Details {
}
var obj = Details()
var obj = Details.init()
这两个实例创建有什么区别
解决方案
两者都是允许的并且是等效的。正如Swift 编程语言所说:
如果按名称指定类型,则可以在不使用初始化表达式的情况下访问该类型的初始化程序。在所有其他情况下,您必须使用初始化表达式。
let s1 = SomeType.init(data: 3) // Valid let s2 = SomeType(data: 1) // Also valid let s3 = type(of: someValue).init(data: 7) // Valid let s4 = type(of: someValue)(data: 5) // Error
因此,当您在实例化类型时提供类型的名称时,您可以使用SomeType(data: 3)
语法或SomeType.init(data: 3)
. 大多数 Swift 开发人员会喜欢SomeType(data: 3)
,因为我们通常喜欢简洁,除非更冗长的语法可以提供更高的清晰度,但在这种情况下并非如此。话虽如此,SomeType.init(data: 3)
是允许的,尽管在实践中不太常见。
推荐阅读
- substrate - 使用节点模板创建私有 Polkadot 区块链
- flutter - 颤振从列表中删除项目导致完全重建
- c# - 如何使用 openXml 为特定单元格添加颜色?
- reactjs - react npm build 在选项卡上显示 favicon,但它只是一个空白页面
- google-play - 如何在 Google Play 控制台上导入/导出可用国家/地区?
- c++ - 问题:FFmpeg 和 C++ 提取和保存帧
- reactjs - React js在登陆页面上隐藏组件
- pdf - PDF 页面自动调整大小以适应 asciidoctor-pdf 的内容
- javascript - 在我的 react-redux 商店中出现“无效的钩子错误”
- azure - 使用 pyspark 对 azure synapse 进行数据分析