iOS 开发者可以用这些 Swift 技巧简化代码

举报
唐里 发表于 2021/06/09 16:13:31 2021/06/09
【摘要】 不要重复造轮子。

在我早年刚做iOS开发时,经常重复写一些与Swift内置函数相同的函数。今天这篇文章,给大家分享一些技巧使代码更清晰简洁。

Reduce() 函数

我们有时会需要计算数组的总和或者乘积,这种情况你可能第一反应是用for循环,如:

let numbers = [2, 3, 5]

var result = 0
for num in numbers {
    result += num
}

print(result)
// Prints 10

就性能而言,这样写没有任何问题。但是 reduce 函数()可以让代码更简单一些:

let numbers = [2, 3, 5]

let result = numbers.reduce(0, +)
// 这等效于以下内容:
// let result = 0 + 2 + 3 + 5,其中0是你输入的初始值

print(result)
// Prints 10

类似地,我们可以用一行代码计算数组的乘积:

let numbers = [2, 3, 5]

let result = numbers.reduce(1, *)
// 这等效于以下内容:
// let result = 1 * 2 * 3 * 5,其中1是你输入的初始值

print(result)
// Prints 30

Swift 为 Array 提供了一些内置函数。用 for 循环时,不如考虑是否有一个内置函数可以替代。如果你不确定,一定要看看 Apple Swift 的文档。下面是两个使用 Swift 内置函数来简化代码的例子:

// 过滤数组项
struct Person {
    var firstName: String
    var lastName: String
}

let people = [
    Person(firstName: "Bill", lastName: "Gates"),
    Person(firstName: "Steve", lastName: "Jobs"),
    Person(firstName: "Elon", lastName: "Musk"),
    Person(firstName: "Steve", lastName: "Wozniak")
]

let results = people.filter { $0.firstName == "Steve"}
// 结果包含两个人,Steve Jobs 和 Steve Wozniak

// 下面是另一个例子

// 检查数组是否包含项
let numbers = [2, 3, 5]
if numbers.contains(5) {
   print("the array contains number 5")
else {
   print("the array does NOT contain number 5")
}

三元运算符? :

三元运算符在编程语言中很常见,是个很方便的操作符,尤其是当你需要根据条件为变量赋值时。当然也不要过度使用它,正确地使用它可以简化代码并提高代码的可读性。

let isMarried = true

// 使用 if-else 语句
let prefix: String
if isMarried {
   prefix = "Mrs"
else {
   prefix = "Ms"
}

// 使用三元运算符
let prefix = isMarried ? "Mrs" : "Ms"

默认值

合并操作符??可以使打开可选值变量更轻松些。

// 不使用合并操作符??的代码像这样
let name: String? = nil
let greetingName: String
if let nameTmp = name {
   greetingName = nameTmp
} else {
   greetingName = "Customer"
}

let greeting = "Dear \(greetingName)"


// 使用合并操作符??像这样简化你的代码
let name: String? = nil
let greetingName = name ?? "Customer"
// 如果名称为零,则返回“客户”。
// 否则返回 name 的值。

let greeting = "Dear \(greetingName)"

总结

作为开发者,避免重复造轮子是必要的,下面总结一些技巧,能够帮你更快更清晰的编写代码。

Reduce () :当需要组合一个整数列表时使用它。

Filter ((Element)-> Bool)-> [ Element ] :当需要过滤数组中的项时使用它。

Contains (Element)-> Bool :当需要检查数组中是否存在某个项时使用它。

三元运算符:? :当你需要根据一个条件给一个变量赋值时使用它。

默认值合并操作符?? :当你需要打开一个可选值变量并想设置一个默认值时使用它。

原文链接:https://markuswu1234.medium.com/swift-tricks-that-junior-ios-developers-might-not-know-61fd31b44055

【版权声明】本文为华为云社区用户翻译文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容, 举报邮箱:cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。