swift - 预期返回“双”的函数中缺少返回 | 该怎么办?
问题描述
以下代码:
protocol ExampleProtocol {
var simpleDescription: String { get }
var absoluteValue: Double { get }
mutating func adjust()
}
extension Double: ExampleProtocol {
var simpleDescription: String {
return "The number \(self)"
}
var absoluteValue: Double {
if self < 0 {
return self * -1
} else if self > 0 {
return self
}
}
mutating func adjust() {
self += 42
}
}
当尝试使用 simpleDescription 或 absoluteValue(例如 print(10.simpleDescription))执行它时,我得到了这个错误:
预期返回“双”的函数中缺少返回
absoluteValue“函数”返回自身,所以 Double 值,为什么它说它缺少一个?
解决方案
问题是您的if
语句缺少一个else
块,没有为 when 的情况定义返回值self == 0
。您可以简单地将else if
分支更改为else
,因为您还想返回self
for 0
。
var absoluteValue: Double {
if self < 0 {
return self * -1
} else {
return self
}
}
您还可以使用三元运算符将其编写为单行:
var absoluteValue: Double {
return self < 0 ? self * -1 : self
}
推荐阅读
- ubuntu - 如何在 ROS 凉亭中加载 kuka iiwa R820?
- swift - 使用 Swift 取消选择任务控制上的窗口
- python - 如何使用 Miniconda 创建纯 Python 虚拟环境?
- laravel-blade - 使用刀片 (Livewire) 调用动态内容
- lua - 如何在 ROBLOX 中找到零件表面的 2D 区域?
- td-engine - 使用TDengine时如何知道表在哪个vnode?
- flutter - 为什么有时我不能在 dart 文件中使用术语,而在其他 dart 文件中我可以使用该术语?
- c# - 我需要添加什么来使用 LineCounter 为 textBox1 输入自动更新 textBox2?
- r - 过滤条件,除了指定行给定行索引号 dplyr
- python - 从导入的模块查询数据库时出错