iOS Swift: 格式化自定义货币编号

iOS Swift: Formatting a custom Currency Number

用逗号分隔符格式化大数字。

已解决(代码已更新且完全可用)

晚上,我有来自 Double 的类型别名 Currency

我想用千位之间的逗号打印出来

这就是我所做的:

import Foundation

typealias Currency = Double

extension Currency {
    var credit: Double { return self }
    var usd: Double { return self * 0.62 }
    
    func description() -> String {
        let price = self as NSNumber
        let formatter = NumberFormatter()
        formatter.numberStyle = .currency
        return formatter.string(from: price)!
    }
    
}

let price: Currency = 1000000000

print(price.description) 
/* It doesn't work, I want something like 1000,000,000.0 */

但是没用。怎么了?

description 是一个 属性,通过 CustomStringConvertible 协议将 description 变量声明为:

A textual representation of the value.

您要调用 description() 方法。添加括号,你会得到你想要的结果:

price.description()

您已经定义了一个函数 description,我认为如果您调用 price.description(),它会按您预期的那样工作。看起来您打算覆盖 CustomStringConvertable 类型的默认行为,但它使用 var description: String { get } 属性,而不是函数。