Swift中Date.now为何无需括号?语法解析求助
为啥Swift里调用Date.now不用加括号?
先看你给出的代码示例:
let dateNow = Date.now print(dateNow) // 2023-03-05 10:39:15 +0000
官方文档里对now的定义是:
static var now: Date { get }
核心原因很简单:now是Date类的静态计算属性,不是方法。
下面给你掰碎了说:
- 要是个方法,调用时必须加
(),比如Date()是初始化方法,加括号才会创建一个新的Date实例;再比如你自定义的func getNow() -> Date,调用也得写getNow()。 - 而
now作为计算属性,本质是个“伪装成变量的逻辑块”:它看起来像个变量,但当你访问它的时候,会自动执行内部的代码逻辑,返回当前时间的Date实例。它不需要参数,也不需要你主动用()触发执行,只要写Date.now,就相当于告诉Swift“我要拿这个属性的值”,它就自动给你算出当前时间返回了。
打个比方:这就像你家冰箱上贴了个“显示当前温度”的磁贴,你不用按任何按钮(加括号),只要看它(访问属性名),它就自动显示当前温度——背后的测温逻辑已经封装在磁贴里了,你不用管,直接拿结果就行。
总结一下:因为now是静态计算属性,不是需要触发执行的方法,所以调用时不需要加括号,直接通过类名.属性名的方式访问即可。
内容的提问来源于stack exchange,提问作者a.hess
相关产品推荐
相关产品推荐

