Kotlin приведёт значение String к правильному представлению - PullRequest
0 голосов
/ 30 мая 2018

У меня есть метод, который принимает value: String?.Цель метода - преобразовать значение String в правильное представление.Например:

"true" -> a Boolean that has a true value

"20" -> an Int that contains 20

"1223.2" -> a Dobule

Какой самый эффективный / лаконичный способ достижения этого результата в Колтине?

ОБНОВЛЕНИЕ

Вот мой текущий код:

private fun insertRealType(map: WritableMap, key: String, value: String?) {

    val test = getValueType(value)

    when (test) {
        is String -> map.putString(key, test)
        is Boolean -> map.putBoolean(key, test)
        is Int -> map.putInt(key, test)
        is Double -> map.putDouble(key, test)
        else -> map.putNull(key)
    }
}

private fun getValueType(value: String?): Any {

    var returnValue: Any?

    returnValue = value?.toDoubleOrNull()

    if (returnValue != null)
        return returnValue

    returnValue = value?.toIntOrNull()

    if (returnValue != null)
        return returnValue

    // ETC......
}

1 Ответ

0 голосов
/ 30 мая 2018

Это зависит исключительно от вашей интерпретации того, что является «правильным» представлением.Например, значение "0" может быть Int или ложным Boolean.

Другая проблема, с которой вы здесь столкнетесь, заключается в том, что вам придется динамически приводить переменную в любом случае.Если вы решили создать JSONObject из этой строки и сгенерировать List<Object> из нее, или даже если вы написали свой собственный метод, который преобразует строковые значения в Object s, вам все равно придется привести указанный объект кего соответствующая форма (возможно, проверьте его тип, используя оператор is).Для того, чтобы у вас был метод с этим абстрактом, вам придется иметь дело с приведением его обобщенного результата вручную.

Я могу помочь вам с более практичным ответом, чем такой концептуальный, как этот, но вы 'Вам нужно будет предоставить код

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...