このSwiftコードをKotlin Androidに変換しようとしていますが、問題があります。私が行うこのこのコードをiOS swiftからAndroid Kotlinに変換する方法
public val kCORNER_RADIUS_BUTTON: CGFloat = 4.0
が、取得エラーメッセージ「浮動小数点リテラルにはない
Swift code:
public let kCORNER_RADIUS_BUTTON: CGFloat = 4.0
は、私は私がKotlinコードで
/**
* 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
}
}
下回ったCGFloatのJavaクラスを変換しています期待されるタイプに合致するCGFloat "
はなぜちょうど 'Double'を使わないのでしょうか?また、そのような型にリテラルを割り当てることはできません。あなたは 'CGFloat(4.0d)'をしなければなりません。 – Todd
できません。私はスウィフトコードを正確に従わなければならない。 今取得のOS間で移植するときにかなり制限し、不要な要件であると思われるエラー – Smiley
の「プロパティのゲッターとセッターが期待される」CGFloat(4.0D): は 公共ヴァルkCORNER_RADIUS_BUTTONを試してみました。あなたの 'CGFloat'クラスは単に' Double'を模倣しているので、なぜそれをエイリアスとタイプしないのですか? 'typealias CGFloat = Double'です。次に、 'CGFloat'(必要な場合)として参照し、無駄なラッパーを維持することなく直接' Double'を使用することができます。 – Todd