我今天注意到,尽管NSNumberFormatter
stringFromNumber
的文档说函数声明以NSNumber
为参数...
var playerScore = 3456789
let displayScore: String = numberFormatter.stringFromNumber(NSNumber.numberWithInteger(playerScore))
只需提供Swift.Int
...
var playerScore = 3456789
let displayScore: String = numberFormatter.stringFromNumber(playerScore)
这是编译器只是聪明吗?或者不应该工作的东西。像这样的东西使Swift有时难以遵循,特别是当它的目的是为新开发人员简化事物时。
答案 0 :(得分:2)
是的,这是预期的行为。 Swift会自动将某些原生数字类型(例如Int
和Float
)连接到NSNumber
。
根据Using Swift with Objective-C book,所有以下类型都会自动桥接到NSNumber
:
Int
UInt
Float
Double
Bool