Size: a a a

2018 May 05

QH

Quantum Harmonizer in KotlinLangRu
Alexander Pimenov
Golang относится то что есть юзабельный gomobile
источник
2018 May 06

EN

Evgeny Novoselov in KotlinLangRu
Ребят всем привет.

Можете подсказать, возможно ли сделать, то что я хочу.

Дело в том что есть несколько разных перегруженных методов setCellValue(Value), в которых Value имеет тип String, Double, Date, Calendar и т.д. Которые мне нужно вызвать с разными типами Value.

Тип Value можно получить вызовом Value.cellTypeEnum.

Смогу ли я написать одну функцию getCellValue(Value) которая определит тип Value и вернет значение в нужном типе String, Double

В С++ это вроде как шаблоны, а что использовать в Kotlin?

Думаю это нужно как то переписать) так как нужно чтобы она возвращала тип
fun getCellValue(cell: XSSFCell?):Any {
   return when (cell?.cellTypeEnum) {
       CellType.NUMERIC -> cell.numericCellValue
       CellType.STRING -> cell.stringCellValue

       else -> "ERROR"
   }
}
это не верно)
источник

OD

Oleg D. in KotlinLangRu
Можно сделать как в библиотеке JSON
то есть несколько методов
getCellValueString
getCellValueBoolean
getCellValueInt
...
источник

OD

Oleg D. in KotlinLangRu
Ну а вообще, в котлине есть Generics, конечно же
источник

OD

Oleg D. in KotlinLangRu
источник

OD

Oleg D. in KotlinLangRu
но имхо в вашем случае это не очень удобно
источник

EN

Evgeny Novoselov in KotlinLangRu
Спасибо за наводку, почитаю. Как я понимаю хочу просто один раз написать getCellValue и чтобы Kotlin сам их насоздавал под разные типы)
источник

OD

Oleg D. in KotlinLangRu
Так а что мешает поставить тип возврата Any, и возвращать как есть?
источник

AP

Alexander Pimenov in KotlinLangRu
да оно
источник

EN

Evgeny Novoselov in KotlinLangRu
Oleg D.
Так а что мешает поставить тип возврата Any, и возвращать как есть?
Any нельзя)
источник

OD

Oleg D. in KotlinLangRu
Так мыж говорим про тип возврата, а это вы пытаетесь Any как аргумент передать
источник

EN

Evgeny Novoselov in KotlinLangRu
Oleg D.
Так мыж говорим про тип возврата, а это вы пытаетесь Any как аргумент передать
тогда я что-то не понимаю) я возвращаю тип any со значением
fun getCellValue(cell: XSSFCell?):Any {
   return when (cell?.cellTypeEnum) {
       CellType.NUMERIC -> cell.numericCellValue
       CellType.STRING -> cell.stringCellValue

       else -> "ERROR"
   }
}
а мне нужно как-то налету передавать тип) в функцию setCellValue
источник

OD

Oleg D. in KotlinLangRu
Короче. Фигня это всё. Делайте много функций!
источник

EN

Evgeny Novoselov in KotlinLangRu
то есть setCellValue(cell.numericCellValue) для CellType.NUMERIC
и setCellValue(cell.stringCellValue) для CellType.STRING
источник

EN

Evgeny Novoselov in KotlinLangRu
:D
источник

OD

Oleg D. in KotlinLangRu
Не надо так
источник

PN

Pirate Ninja in KotlinLangRu
Всем привет. Ребят, расскажите, есть класс, в котором есть свойство. Это свойство инициализируется в методе. Знаю про модификатор lateinit , а так же про зануление. Скачать пользуюсь lateinit, но хотел на всякий случай спросить, не считается ли это говнокодом? Или есть какие-то альтернативы?
источник

QH

Quantum Harmonizer in KotlinLangRu
Pirate Ninja
Всем привет. Ребят, расскажите, есть класс, в котором есть свойство. Это свойство инициализируется в методе. Знаю про модификатор lateinit , а так же про зануление. Скачать пользуюсь lateinit, но хотел на всякий случай спросить, не считается ли это говнокодом? Или есть какие-то альтернативы?
Инициализировать в конструкторе.
источник
2018 May 07

C

CodeByZen in KotlinLangRu
Quantum Harmonizer
Инициализировать в конструкторе.
Т.е. делать так предлагаешь?
class someClass(val foo: String? = "bar") {
   fun foobar(): String? {
           return this.foo;
       }
   }

val fooBar = someClass("Hello World");
val fooBarNulled = someClass();

fun main(args: Array<String>) {
   println(fooBar.foobar())
   println(fooBarNulled.foobar())
}
источник

QH

Quantum Harmonizer in KotlinLangRu
CodeByZen
Т.е. делать так предлагаешь?
class someClass(val foo: String? = "bar") {
   fun foobar(): String? {
           return this.foo;
       }
   }

val fooBar = someClass("Hello World");
val fooBarNulled = someClass();

fun main(args: Array<String>) {
   println(fooBar.foobar())
   println(fooBarNulled.foobar())
}
Слишком сферический пример в вакууме. У меня сразу возникает вопрос, зачем строка нуллабельна и зачем ей значение по умолчанию.
источник