Swift:access.property 和 access.method()

标签 swift methods syntax properties

标题的示例是访问属性和调用方法之间的唯一区别吗?

似乎属性是没有括号的东西,而方法调用总是有一个括号用于将参数传递给方法,即使没有要传递的参数。

这是主要差异吗?

来自 Objective-C,这似乎还不够不同。

最佳答案

括号是最明显的区别...至少就访问语法而言是这样。正如 MartinR 在评论中提到的那样,概念和实现方面存在更多差异。 (我鼓励您查看他链接的 that documentation 以了解属性(property)可以包含的所有内容。)

访问方面需要注意的一件事:属性语法包含 setter 和 getter“方法”,有时同时包含两者。所以,对于一个方法,如果你想检索、修改和设置一个值,你必须调用 getter,修改,然后调用 setter:

var bar: Int = foo.getBar()
bar += 1
foo.setBar(bar)

使用属性,您可以在一次操作中获取和设置:

foo.bar += 1

func increment(inout num: Int) { num++ }
increment(&foo.bar)

在幕后,这会调用 get 访问器,修改值,然后调用 set 访问器 - 并调用 willSet/didSet 观察者,无论您是处理存储属性还是计算属性。

关于Swift:access.property 和 access.method(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28328956/

相关文章:

swift - 将 JSON 字典保存到 Realm Swift

arrays - 在 Swift 4 中将 Json 对象转换为数组格式

ios - 点击 GMSPolygon Swift

objective-c - 为什么我们不能将 C 字符串用作 SEL?

C 编程 - 多行注释

swift - SceneKit - 运动 + 重力 = 奇怪的运动

javascript - 闭包:逐行解释 "Javascript: Good Parts"示例?

c - 带指针的 typedef 声明

c - 变量前使用等号或冒号的区别

java - Java 方法中 byte[] 和 byte ... 的区别