swift - SwiftUI 在哪里声明扩展?
问题描述
我在 ContentView 的末尾声明了 Double 的扩展。但它显示错误“Initializeer 'init(_:) 要求 'Double' 符合 'StringProtocol'”。
struct ContentView : View {
@State var demo: Double = 0
var body: some View {
VStack {
Slider(value: $demo, from: 0.0, through: 100.0, by: 0.01)
.padding()
Text(demo.roundTo(places: 5))
}
}
}
extension Double {
public func roundTo(places: Int) -> Double {
let divisor = pow(10.0, Double(places))
return (self * divisor).rounded() / divisor
}
}
解决方案
文本视图需要一个字符串。将您的文本视图更改为:
Text("\(demo.roundTo(places: 5))")
推荐阅读
- spring-boot - 如何覆盖docker容器中的属性文件?
- c# - 显示 OAuth 2 新令牌(仅用于测试)
- javascript - Img src="blob:http://localhost... 不起作用 - createObjectURL 或 readAsDataURL | Firebase | Vue.js 都不起作用
- python - 如何允许权限以便我可以运行我的 python 服务器?
- r - 在 R 中使用 biomart 循环
- javascript - 全日历选择和取消选择日期
- ios - 在 SwiftUI 小部件中添加观察者的位置
- python - 如何将函数中的点转换为列表以绘制完整的图表?
- mysql - 使用表字段作为存储过程参数(将给定的表字段重新分配到其他表中)
- javascript - 如何在 React 中对 HTML 表格进行排序?