在 SwiftUI 中用常量包装货币表达式
Wrapping currency expression in a constant in SwiftUI
我正在学习 Swift 和 Xcode,但有一项任务让我无法解决问题。
我在三个地方使用值格式化程序:
format: .currency(code: Locale.current.currencyCode ?? "PLN")
我把它打包成一个常量,它没有抛出任何错误:
let currencyFormatter = { (amount: Double) -> FloatingPointFormatStyle<Double>.Currency in
.currency(code: Locale.current.currencyCode ?? "PLN")
}
虽然执行确实抛出了几个错误(如果我将闭包交换为 void 而不是接受 Double,它们不会改变):
Text(totalPerPerson, format: currencyFormatter)
部分错误:
1.
Cannot convert value of type 'Double' to expected argument type '((Double) -> FloatingPointFormatStyle<Double>.Currency).FormatInput'
Initializer 'init(_:format:)' requires that '((Double) -> FloatingPointFormatStyle<Double>.Currency).FormatInput' conform to 'Equatable'
正确的常量应该是
let currencyFormatter = FloatingPointFormatStyle<Double>.Currency.currency(code: Locale.current.currencyCode ?? "PLN")
看来这个问题的可行答案还有另一种变体,它更加强调常量的类型:
let currencyFormatter: FloatingPointFormatStyle<Double>.Currency = .currency(code: Locale.current.currencyCode ?? "PLN")
但如果没有@Asperi 的帮助就找不到它。
我正在学习 Swift 和 Xcode,但有一项任务让我无法解决问题。 我在三个地方使用值格式化程序:
format: .currency(code: Locale.current.currencyCode ?? "PLN")
我把它打包成一个常量,它没有抛出任何错误:
let currencyFormatter = { (amount: Double) -> FloatingPointFormatStyle<Double>.Currency in
.currency(code: Locale.current.currencyCode ?? "PLN")
}
虽然执行确实抛出了几个错误(如果我将闭包交换为 void 而不是接受 Double,它们不会改变):
Text(totalPerPerson, format: currencyFormatter)
部分错误: 1.
Cannot convert value of type 'Double' to expected argument type '((Double) -> FloatingPointFormatStyle<Double>.Currency).FormatInput'
Initializer 'init(_:format:)' requires that '((Double) -> FloatingPointFormatStyle<Double>.Currency).FormatInput' conform to 'Equatable'
正确的常量应该是
let currencyFormatter = FloatingPointFormatStyle<Double>.Currency.currency(code: Locale.current.currencyCode ?? "PLN")
看来这个问题的可行答案还有另一种变体,它更加强调常量的类型:
let currencyFormatter: FloatingPointFormatStyle<Double>.Currency = .currency(code: Locale.current.currencyCode ?? "PLN")
但如果没有@Asperi 的帮助就找不到它。