
Vladimir
01.12.2017
12:06:03
Всем привет! Я только начинаю переходить с Java на Kotlin, так что вопрос может звучать глупо. Если есть два класса, которые наследуются от какого-то другого, то получается, что использование функций верхнего уровня для наследников не нужно, если они могут быть прописаны в родителе?

Алексей
01.12.2017
12:19:20
Вопрос непонятен, что такое функция верхнего уровня? High-order function, что ли? Покажите код)

Vladimir
01.12.2017
12:49:50
Я про это
В Java мы часто создаем статичные классы со статичными методами для утилит. Непосредственная реализация этого паттерна в Kotlin будет выглядеть следующим образом:
//Don't
object StringUtil {
fun countAmountOfX(string: String): Int{ return string.length - string.replace("x", "").length } } StringUtil.countAmountOfX("xFunxWithxKotlinx")
Kotlin позволяет убрать ненужные оборачивания в класс при помощи функций верхнего уровня. Часто, мы так же можем добавить некоторые функции расширения, для повышения читабельности. Так, наш код становится больше похожим на «рассказ истории».
//Do
fun String.countAmountOfX(): Int {
return length - replace("x", "").length }
"xFunxWithxKotlinx".countAmountOfX()

Quantum Harmonizer
01.12.2017
12:51:13

Google

Quantum Harmonizer
01.12.2017
12:51:42
Всё равно в первом сообщении какая-то каша.

Vladimir
01.12.2017
12:55:45
Я скинул код по его просьбе
Вопрос непонятен, что такое функция верхнего уровня? High-order function, что ли? Покажите код)
Я про это
В Java мы часто создаем статичные классы со статичными методами для утилит. Непосредственная реализация этого паттерна в Kotlin будет выглядеть следующим образом:
//Don't
object StringUtil {
fun countAmountOfX(string: String): Int{ return string.length - string.replace("x", "").length } } StringUtil.countAmountOfX("xFunxWithxKotlinx")
Kotlin позволяет убрать ненужные оборачивания в класс при помощи функций верхнего уровня. Часто, мы так же можем добавить некоторые функции расширения, для повышения читабельности. Так, наш код становится больше похожим на «рассказ истории».
//Do
fun String.countAmountOfX(): Int {
return length - replace("x", "").length }
"xFunxWithxKotlinx".countAmountOfX()


Quantum Harmonizer
01.12.2017
12:59:15

Павел
01.12.2017
14:29:16
А что это за персонаж?

Кита
01.12.2017
14:34:26
Это гуру ООП. Пришел в этот мир чтобы напомнить всем нам смертным как мы стали далеки от древних писаний ООП парадигмы

Павел
01.12.2017
14:35:28
Точнее - он в жизни реально топит за ООП?)

Кита
01.12.2017
14:39:59

Павел
01.12.2017
14:52:39

Алексей
01.12.2017
16:03:13
Переформулирую. Если два класса наследуются от какого-то, то лучше же объявить нужную нам функцию в родителе, чем прописывать отдельно функцию верхнего уровня?
в коде речь про extension-функции. Ими можно заменить утилитные классы, и просто некоторые вещи более красиво написать. Но я всё ещё не понимаю, причём тут наследование в вашем вопросе.
Что значит "лучше объявить нужную нам функцию в родителе"? Кому нужную, этим классам?
Наследовние применяется, когда между сущностями есть отношение "является", и оно нужно для расширения функций базового класса новыми функциями. Если такого отношения нет - не применяйте наследование.
Попробуйте переформулировать ваш вопрос, и привести конкретный кусок своего собственного кода, с двумя альтернативными реализациями чего-то. Тогда можно будет сказать, какая лучше.

Google

Zaleev
01.12.2017
19:42:34
Здорова

Illia
02.12.2017
21:13:05
Может кому-то интересно будет, моно даже на сайте разместить

Quantum Harmonizer
02.12.2017
21:16:00
@OlegD у вас тут разрешено пиратство?

Illia
02.12.2017
22:24:05
Ну в принципи, да, не хорошо получиться )

Dan
02.12.2017
22:31:09
так нехорошо получается, ужас какой. можно подумать что из других мест эту книгу при желании не скачать бесплатно... кому надо - тот купит. кому надо - скачает. даёшь свободу информации!

Oleg
02.12.2017
22:37:26
Друзья! Имеется второй домен, который на данный момент не используется (kotlin.su). Пришло время его оплачивать. Как думаете, он нам вообще нужен? Может его использовать для форума или чего-то еще. Если у кого-то есть идеи как он нам может пригодится, тогда я его продлю. Если нет, то наверно откажусь

MainDRY
03.12.2017
06:32:08
Лучше для форума.

Сергей
07.12.2017
11:18:48
Всем привет!

Михаил
07.12.2017
11:35:14
Привет) Очень много прибывших за последнее время)

Nick
07.12.2017
13:57:34
Что скажете по поводу языка?

Алексей
07.12.2017
13:57:55

Quantum Harmonizer
07.12.2017
13:58:09

Nick
07.12.2017
13:59:03
Каких именно практических задачь ( пример ) ?

Quantum Harmonizer
07.12.2017
14:00:47
Работа с коллекциями, асинхронщиной, отличный интероп, годный байт-код.

Михаил
07.12.2017
14:10:11
на сколько удобно на нём клепать например REST API?

Тулеген
07.12.2017
14:14:37

Михаил
07.12.2017
14:15:25
Что на счёт jdbc?
норм?

Quantum Harmonizer
07.12.2017
14:53:42

Google

Nick
07.12.2017
16:22:33
По вашему мнению почему неудобно( не практично) писать на котлин ? ( приведите 10 примеров )

Alexey
07.12.2017
16:23:57
Надо придумать?

Nick
07.12.2017
16:24:48
Нет, с вашей практики
Придумывают сказки и то опираясь на что то )

Matvey
07.12.2017
16:25:57
10 примеров... Будто hr-щик спрашиваешь

Alexey
07.12.2017
16:26:53
Оверхед из-за котлина, если в андройде все тесно и надо в один декс уместиться, то это может быть гемор

Matvey
07.12.2017
16:27:10
Вот такой вопрос. Стоит ли запариваться на с Java для андроида, или поверхностных знаний хватить может, чтобы на котлине писать?
Без "на"

Nick
07.12.2017
16:28:34
Без "на"
Все зависит от сложности поставленой задачи )

Matvey
07.12.2017
16:29:26
Хмм, спасибо

Nick
07.12.2017
16:29:36
Java не просто так уже существует столько времени ) Хотя жаль что не так быстро развиваеться
Как по мне котлин легко понимать и применять паралельно с кодом на java
Но это сугубо мое мнение )

Matvey
07.12.2017
16:32:23
Да, я такие мнения часто слышу, это с ростом опыта появляется

Nick
07.12.2017
16:32:29
Это пожалуй тот язык который говорит сначала учи java а потом поговорим и обо мне )

Matvey
07.12.2017
16:32:46
Ну, умение совмещать
Да, понял, спасибо

Alexey
07.12.2017
16:35:51
Я вас не различаю)

Matvey
07.12.2017
16:56:22
Сейчас

Google

Matvey
07.12.2017
16:58:54

Alexey
07.12.2017
16:59:15
?

Quantum Harmonizer
07.12.2017
17:17:55

Alexey
07.12.2017
17:24:56
Как у комплюктера буду - поищу

Кита
07.12.2017
17:28:36
Есть например задача сделать с клиента апдейт токена по рефрештокену. Мы знаем что наш репозиторий который работает с данными может параллельно кучу запросов посылать. В одном потоке мы уже точно знаем что токен истек. Как остановить остальные потоки с запросами которым тоже нужен токен чтобы подождать когда придет новый и продолжить запрос уже с ним. Как эту задачу решить на котлине?

Quantum Harmonizer
07.12.2017
17:29:41

Кита
07.12.2017
17:32:00

Quantum Harmonizer
07.12.2017
17:32:26

Alexey
07.12.2017
20:00:51
Можно примеров его оверхеда?
https://developer.android.com/kotlin/faq.html
The Kotlin runtime adds about 7,000 methods and ~1MB to your debug APK.
Proguard спасет, но в дебаге неудобно его запускать

Quantum Harmonizer
07.12.2017
20:01:41
Можно, кстати, попробовать собрать урезанную версию стдлибы.

Сергей
08.12.2017
05:22:59
Я в java, а темболее в kotlin новенький, решил все таки встать на этот путь)) А подскажите как лучше сделать, у менять есть большой xml файл, примерно на 500 000 объектов, мне нужно эту xml читать и находить в ней нужные мне элементы, сейчас я сделал так. Читаю весь файл, сохраняю данные в список, а потом делаю поиск по списку если нужно что-то найти. Но чую что делаю что-то не правильно. Как лучше осуществить поиск по xml, читать весь файл в память все равно придется? Как тогда ускорить поиск по списку?

Михаил
08.12.2017
05:24:29
читать файл через sax/stax, будет быстрее и лучше