var num = NSNumber(bool: false)
num = true
println(num) // "1"
num
是一个NSNumber
实例,而true
是一个Boolean
实例。为什么允许这样做,它是如何工作的?我觉得它实现了某种类型的转换器,所以如果是这样的话,我该如何为我的自定义类实现任意的转换器呢?
最佳答案
NSNumber
可以包含数字(int,float,…)和布尔值。
在Swift标准库中,Boolean
类型实现到NSNumber
的转换,您可以同样地向类中添加一个func __conversion()
方法,如下所示:
class MyNumber {
func __conversion() -> NSNumber {
return NSNumber(float: Float.infinity)
}
}
var i = NSNumber(int: 1)
i = MyNumber()
关于swift - 为什么我允许在Swift中将NSNumber的值设置为true/false?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25247886/