作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试解决 Swift 中的字符串分配问题:这里我们有一个结构:
struct Student {
var name: String
var id: String
var mentor: String?
var grade: String?
}
我们想把它解析成一个字符串,像这样:
if (mentor != nil && grade != nil) {
return "Student info: name:" + name + " id:" + id + " mentor:" + mentor! + " grade:" + grade! + "."
} else if (mentor != nil) {
return "Student info: name:" + name + " id:" + id + " mentor:" + mentor! + "."
} else if (grade != nil) {
return "Student info: name:" + name + " id:" + id + " grade:" + grade! + "."
} else {
return "Student info: name:" + name + " id:" + id + "."
}
我是Swift新手,上面的代码是基于其他语言的经验,请问在Swift中有没有更简洁的实现方式?就像处理可选的 toString() 一样,如果它是 nil 则返回一个空字符串 ""?
最佳答案
Alexander 的回答很好,并且很好地利用了高阶函数 map(),但如果您刚刚开始,这可能会让您有些不知所措。通过明智地使用 if let
“optional binding”,您可以大大简化您的代码:
var result = "Student info: name:" + name + " id:" + id
if let mentor = mentor {
result += " mentor:" + mentor
}
if let grade = grade {
result += " grade:" + grade
}
result += "."
return result
或重写以避免 +
运算符:
var result = "Student info: name:\(name) id:\(id)"
if let mentor = mentor {
result.append(" mentor:\(mentor)")
}
if let grade = grade {
result.append(" grade:\(grade)")
}
result.append(".")
return result
关于Swift可选赋值,处理nil/空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50499414/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!