在 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 的帮助就找不到它。