gpt4 book ai didi

java - 如何将此代码从 iOS swift 转换为 Android Kotlin

转载 作者:搜寻专家 更新时间:2023-11-01 07:11:53 25 4
gpt4 key购买 nike

我正在尝试将此 Swift 代码转换为 Kotlin Android,但遇到了问题。

Swift code:

public let kCORNER_RADIUS_BUTTON: CGFloat = 4.0

我已经转换了下面找到的 CGFloat java 类

/**
* CGFloat

* @author [Harald Kuhr](mailto:harald.kuhr@gmail.com)
* *
* @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
}

}

在 Kotlin 代码中我这样做

public val kCORNER_RADIUS_BUTTON: CGFloat = 4.0

但收到错误消息“浮点文字不符合预期类型 CGFloat”

最佳答案

如果您必须按照编写的方式使用CGFloat,则必须直接构建一个。您不能只为其分配原始类型,Kotlin 无法理解这一点。

 val kCORNER_RADIUS_BUTTON: CGFloat = CGFloat(4.0)

但是,因为您的 CGFloat 类没有做 Double 没有做的任何事情,所以我建议改用它。似乎您有要求(我会推迟)完全移植它,而忽略了您要移植到的语言的约定。在这种情况下,我只需将 Double 别名键入 CGFloat。

typelias CGFloat = Double

然后你就可以在任何地方使用它了:

fun doSomething(foo: CGFloat): CGFloat { ... }

关于java - 如何将此代码从 iOS swift 转换为 Android Kotlin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44460471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com