Как конвертировать этот код из iOS swift в Android Kotlin

Я пытаюсь преобразовать этот код Swift в Kotlin Android и иметь проблемы.

Swift code: public let kCORNER_RADIUS_BUTTON: CGFloat = 4.0 

Я преобразовал класс Java CGFloat, который я нашел ниже

 /** * 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 как вы его написали, вам нужно будет построить его напрямую. Вы не можете просто присвоить ему примитивный тип, у Котлина нет возможности понять это.

      val kCORNER_RADIUS_BUTTON: CGFloat = CGFloat(4.0) 

    Однако, поскольку ваш класс CGFloat не делает ничего, что Double еще не делает, я бы рекомендовал использовать это вместо этого. Кажется, что у вас есть требования (которые я хотел бы вернуться), чтобы точно это передать, игнорируя соглашения на языке, на который вы портируете. В этом случае я бы просто набирал слова Double-CGFloat.

     typelias CGFloat = Double 

    Затем вы можете использовать его в любом месте:

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