我試圖將此Swift代碼轉換爲Kotlin Android並出現問題。如何將此代碼從iOS Swift轉換爲Android Kotlin
Swift code:
public let kCORNER_RADIUS_BUTTON: CGFloat = 4.0
我已經轉換了CGFloat的java類,我發現下面
/**
* CGFloat
* @author [Harald Kuhr](mailto:[email protected])
* *
* @author duncan
*/
class CGFloat : Number {
private val value: Double
constructor() {
value = 0.0
}
constructor(d: Double) {
value = d
}
override fun toByte(): Byte {
return value.toByte()
}
override fun toChar(): Char {
return value.toChar()
}
override fun toDouble(): Double {
return value
}
override fun toFloat(): Float {
return value.toFloat()
}
override fun toInt(): Int {
return value.toInt()
}
override fun toLong(): Long {
return value.toLong()
}
override fun toShort(): Short {
return value.toShort()
}
override fun hashCode(): Int {
// From Double.hashCode
val bits = java.lang.Double.doubleToLongBits(value)
return (bits xor bits.ushr(32)).toInt()
}
override fun equals(other: Any?): Boolean {
// Modified Double.equals
return other is CGFloat && java.lang.Double.doubleToLongBits(other.value) == java.lang.Double.doubleToLongBits(value)
}
override fun toString(): String {
return value.toString()
}
companion object {
// Inspired by JNA NativeLong and IntegerType
val SIZE = Integer.MAX_VALUE
}
}
在科特林代碼我這樣做
public val kCORNER_RADIUS_BUTTON: CGFloat = 4.0
,但得到錯誤消息「浮點文字不符合預期的類型CGFloat「
爲什麼不直接使用'Double'?另外,您不能將文字分配給這種類型。你必須做'CGFloat(4.0d)'。 – Todd
我不行。我必須嚴格遵循Swift代碼。 試圖 公共VAL kCORNER_RADIUS_BUTTON:CGFloat的(4.0D) 現在越來越「屬性的getter和setter預期」的錯誤 – Smiley
這似乎是一個相當嚴格的,沒有必要要求操作系統之間移植的時候。你的'CGFloat'類只是模仿'Double',所以爲什麼不輸入別名呢? 'typealias CGFloat = Double'。然後你可以將它稱爲'CGFloat'(如果你必須的話)並直接使用'Double'而不必維護一個無用的包裝器。 – Todd