【发布时间】:2023-03-20 22:55:01
【问题描述】:
所以我试图检查NSNumber 是Double 还是Int,我想知道这是否可能。
我希望这会起作用,但无论我比较哪种类型,它总是返回 true
var myDouble: Double = 0.0
var myNSNumber: NSNumber = NSNumber(value: myDouble)
if myNSNumber is Double {
print("NSNumber is Double")
}else {
print("NSNumber is different type")
}
在 kotlin 中,我正在使用这样的数字扩展,即 NSNumber 在 swift 中,我想在 swift 中重新创建它
protected operator fun Number.plus(other: Number): Number {
return when (this) {
is Long -> this.toLong() + other.toLong()
is Int -> this.toInt() + other.toInt()
is Short -> this.toShort() + other.toShort()
is Byte -> this.toByte() + other.toByte()
is Double -> this.toDouble() + other.toDouble()
is Float -> this.toFloat() + other.toFloat()
}
}
【问题讨论】:
-
you 所说的“是 Double”是什么意思?你真的想检查里面的值是否可以正确表示为
Double,或者你想检查用于创建NSNumber的值是否最初是Double? -
我想检查用于创建 NSNumber 的值是否最初是 Double
-
请问:为什么?除非您在做一些非常奇怪的事情,否则这对您来说一定无关紧要。
-
@luk2302 所说的。如果您需要来自 NSNumber 的 Double,为什么不直接致电
myNSNumber.doubleValue? -
也许你最好解释一下你想用这个实现什么,可能有一种不同的方法来做到这一点,而不是使用 NSNumber。我也很好奇,在您的 kotlin 代码 3 + 3.5 = 6 中,这是预期的行为吗?