SwiftUI 是声明式语法,对比与指令式语法的话,可以举例说明它们的区别吗?
声明式语法与指令式语法的区别:
声明式语法:
Button(action: {
self.counter += 1
}) {
Text("Tap me")
}
.padding()
.background(Color.blue)
Text("You've tapped \(counter) times")
在上面的例子中,你没有告诉 SwiftUI 如何绘制按钮或标签,也没有告诉它如何响应按钮的点击事件。你只是声明了这些元素和它们之间的关系。
指令式语法:
let button = UIButton(type: .system)
button.setTitle("Tap me", for: .normal)
button.addTarget(self, action: #selector(tapAction), for: .touchUpInside)
button.translatesAutoresizingMaskIntoConstraints = false
let label = UILabel()
label.text = "You've tapped 0 times"
label.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(button)
view.addSubview(label)
NSLayoutConstraint.activate([
button.centerXAnchor.constraint(equalTo: view.centerXAnchor),
button.centerYAnchor.constraint(equalTo: view.centerYAnchor, constant: -50),
label.centerXAnchor.constraint(equalTo: view.centerXAnchor),
label.centerYAnchor.constraint(equalTo: view.centerYAnchor, constant: 100)
])
@objc func tapAction() {
counter += 1
label.text = "You've tapped \(counter) times"
}
在上面的 UIKit 例子中,你需要明确地创建按钮和标签,设置它们的属性,添加目标动作来处理用户交互,以及添加约束来确定它们在视图中的位置。这是指令式编程的一个例子,因为你正在告诉 UIKit 如何做这些事情。
总结:
SwiftUI 使用声明式语法,使得创建和更新 UI 更加直观和简洁,而 UIKit 使用指令式语法,提供了更多的灵活性和控制。
妈妈让女儿打扫卫生这个场景。
命令式(指令式)
妈妈详细指导女儿如何打扫卫生,包括清洁哪些地方、使用哪些工具以及按照什么顺序进行清洁,这就类似于命令式编程。在这种情况下,女儿被告知了每一个具体的步骤和操作,类似于命令式编程需要明确指定每一个操作的执行步骤。
声明式
妈妈告诉女儿房间应该保持整洁,但并不详细说明具体的清洁步骤。在这种情况下,女儿只需知道房间需要保持干净整洁,而不需要了解每个细节的清洁过程。这就像声明式编程,它关注于描述目标或结果,而非具体的步骤。
下面用js
为例,不会SwiftUI
哈。
命令式(指令式)
const items = [1, 2, 3]
const result = []
for(let i = 0; i < items.length; i++) {
const item = items[i];
if (item % 2 !== 0) {
result.push(item)
}
}
核心:
明确的指定达到目标每一步该如何操作,侧重于具体步骤。
声明式
const items = [1, 2, 3]
const result = items.filter(item => item % 2 !== 0)
核心:
它关注于描述目标或结果,也就是“把所有的奇数给我”。而非具体步骤。
3 回答3.9k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
2 回答1k 阅读
2 回答1.3k 阅读✓ 已解决
1 回答1.1k 阅读✓ 已解决
1 回答2.7k 阅读
1 回答1.5k 阅读
声明式:
命令式: