Generi c Функция добавления номера - PullRequest
0 голосов
/ 24 апреля 2020

Я хотел создать обобщенную функцию c на языке kotlin, которая будет добавлять все типы чисел, например, Double, Float, Long, Int, Byte, Char, Short. Итак, я создал функцию:

fun <T : Number> add (a: T, b: T) = a + b 

Но Android Studio IDE выдает ошибку времени компиляции на + знаке, поскольку Number класс не имеет plus метода. Это почему? И кто-то может предложить решение для обобщенной функции c в kotlin без использования оператора if else или when.

1 Ответ

2 голосов
/ 24 апреля 2020

Ваша функция знает только, что они оба являются числами, если вы не проверите их типы и приведение. Функция Number.plus(Number) отсутствует, поэтому вы не можете добавлять их как есть. Вместо этого вы можете преобразовать их в Doubles и добавить их, так как есть функция Number.toDouble(). Тип не нуждается в повторении.

fun <T : Number> add (a: T, b: T) = a.toDouble() + b.toDouble()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...