
Nikolay
26.01.2018
17:22:23
и все хорошо работает

Sergey
26.01.2018
17:27:08
можно еще интерфейс сделать с дефолтным методом)

Nikolay
26.01.2018
17:27:33
ну для sealed классов это врядли подойдет, или?

Andrew
26.01.2018
17:29:11
Да мне хватает вот такого:
object OutUsbOpen: OutputCommand() { override fun toString(): String = "${javaClass.simpleName}()" }
Просто вот такого -- строк 50, что смущает.

Google

Nikolay
26.01.2018
17:29:55
ну это весьма странно выглядит, как по мне

Andrew
26.01.2018
17:30:50
Альтернативы?
Часть команд с параметрами, потому обычные data class-ы с автосгенерированными equals / hashCode / toString, для команд без параметров других вариантов не вижу -- для object не надо определять сравнение вообще, он и так один, остаётся только toString() -- но как я уже отметил, это косметика (логи приятнее), а не решение задачи, так что с этим можно жить.

Nikolay
26.01.2018
17:34:38

Andrew
26.01.2018
17:35:54

Nikolay
26.01.2018
17:38:38
может я и ошибаюсь, и это только дело вкуса. Вот проверил документацию - https://kotlinlang.org/docs/reference/sealed-classes.html - они сами тут object используют
а зачем toString() переопределять у него?
так что сорри весли ввел в заблуждение
я просто написал как сам использую ?

Andrew
26.01.2018
17:41:41
Andrew Mikhaylov:
... .toString() выдаёт qualified name и instance id, которые выглядят так себе -- хотелось бы видеть MyClass() вместо com.example.company.project.package.MyClass@601d768d.

Nikolay
26.01.2018
17:42:19
ну это я увидел, но это чисто чтобы красиво? или какаято функциональная ценность? ? (мало ли, может вы в текстовом поле выводите это)

Andrew
26.01.2018
17:44:23
Логи, косметика, я ж писал.
В общем, я суть уловил, вариантов нет, но проблемой не является, так что всё хорошо :)

Google

Vladimir
26.01.2018
18:28:17
Что мешает для этих 50 object'ов сделать один общий родитель с equals/hashCode/toString?

Andrew
26.01.2018
19:46:07

Bogdan
26.01.2018
20:21:23

Cube
27.01.2018
09:28:47
пытаюсь в onCreate проверить if (savedInstanceState==null)
не работает
override fun onCreate(savedInstanceState: Bundle?)

Gleb
27.01.2018
09:35:25
Что не работает?
Смарт каст?

Quantum Harmonizer
27.01.2018
09:35:56
-> @android_ru или @kotlin_mobile

Alexei
27.01.2018
09:39:40
товарищи! Кто-то пробывал юзать kotlin - native, как впечатления? стоит ли пробывать?

Boris
27.01.2018
09:54:31

Timur
27.01.2018
10:06:01
Ребят, а coroutin(ы) предпочтительнее использовать, чем RxJava? Или от чего это зависит

Quantum Harmonizer
27.01.2018
10:06:13
от задачи

Timur
27.01.2018
10:07:19
от задачи
а есть статейка или информация в каком случае, что лучше применять?

Quantum Harmonizer
27.01.2018
10:08:55

Sergey
27.01.2018
10:16:05

Quantum Harmonizer
27.01.2018
10:16:40

Andrew
27.01.2018
10:23:30

Timur
27.01.2018
10:24:51

Boris
27.01.2018
10:25:01
как мы тут выяснили, сейчас у каналов не до конца проработана работа с распараллеливанием задач

Google

Timur
27.01.2018
10:27:22
@fogone Просто я хотел бы узнать насколько корутины лучше\есть преимущества перед RxJava. Для сетевых запросов\БД и последущей обработки результа
Скинули статью, надеюсь она ответит на вопросы

Andrew
27.01.2018
10:32:01
Да, это всё ещё не до конца стабилизированное и не покрывающее все юзкейсы апи, у рх есть уйма операторов, которых нету у каналов, но каналы прекрасны тем, что они о корутинах с вытекающим из этого способом применения.
Для кого-то это минус, для кого-то -- плюс.

Boris
27.01.2018
10:33:42
да, сейчас у рх намного более развита инфраструктура, но я думаю у каналов со временем тоже всё появится
из за корутин каналы намного проще устроены чем обсервабл, использовать их намного приятнее из за этого. И писать расширения тоже

Igor
27.01.2018
11:01:46

Andrew
27.01.2018
11:09:49

Igor
27.01.2018
11:15:53
А когда пытаются императивщину натянуть на рх - то получаются просто адовые спагетти.
Честно не понимаю зачем из каналов делать рх, когда можно просто взять рх (если такая любой везде его натягивать) + расширения от корутин.

Igor
27.01.2018
11:28:46
А в новых версиях implicit преобразований к нужным типам еще не завозили случаем?

Quantum Harmonizer
27.01.2018
11:29:18

Igor
27.01.2018
11:29:48
Да ладно, удобно было бы. Не сильно люблю implicit-ы, но в некоторых случаях код они сокращают и упрощают :)

Igor
27.01.2018
12:09:35

Igor
27.01.2018
12:11:14

Igor
27.01.2018
12:15:32

Igor
27.01.2018
12:19:10
Мне очень нравятся extension функции для таких штук, но постоянно юзать даже экстеншны подбешивает :)
https://gist.github.com/komigor/bf53fbfbff292cf863ee2e153e4d5516


Boris
27.01.2018
13:01:31
имплиситы это дорога в ад, вот скала часто для бигдаты используется и я там раз поймал такую проблему, что мплиситное преобразование добавляло 2 часа работы 4 часовой джобе, т.е. программист просто не заметил, что в одном месте применялось преобразование в очень нагруженном месте
хорошо хоть идея подчеркивает их, но всё равно есть грань, где явное всегда лучше неявного
имплиситные параметры я тоже никогда не понимал, т.е. с одной стороны они могут сэкономить 5 минут на пробрасывание, но с другой забрать час на поиск источника

Google

Artem
27.01.2018
13:19:54

Kirill
27.01.2018
13:21:50

Artem
27.01.2018
13:24:39
Благодарю

Bogdan
27.01.2018
15:09:50
кто пробывал kotlin\native и Qt?

Quantum Harmonizer
27.01.2018
15:10:53

Bogdan
27.01.2018
15:13:26

ud1
27.01.2018
17:22:15
Привет всем, у меня вопрос по котлину. Хочу такой код:
var oldFiles : MutableMap<Path, ChangeType>? = null;
synchronized(this) {
if (files.isNotEmpty())
{
oldFiles = files;
files = HashMap()
}
}
if (oldFiles != null)
process(oldFiles)
Т.е. смысл в том, что я в отдельном потоке проверяю, что некая переменная класса типа MutableMap не пуста, и если так, то заменяю ее на пустую, а для певоначальной вне блока synchronized уже выполняю метод обработки. Но это не компилируется из-за того, что в отличие от жавы в котлине это кложура:
Error:(31, 25) Kotlin: Smart cast to 'MutableMap<Path, DirObserver.ChangeType>' is impossible, because 'oldFiles' is a local variable that is captured by a changing closure
Как быть?

Igor
27.01.2018
17:47:54
Из synchronized можно вернуть значение
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/synchronized.html

Quantum Harmonizer
27.01.2018
17:49:04
Привет всем, у меня вопрос по котлину. Хочу такой код:
var oldFiles : MutableMap<Path, ChangeType>? = null;
synchronized(this) {
if (files.isNotEmpty())
{
oldFiles = files;
files = HashMap()
}
}
if (oldFiles != null)
process(oldFiles)
Т.е. смысл в том, что я в отдельном потоке проверяю, что некая переменная класса типа MutableMap не пуста, и если так, то заменяю ее на пустую, а для певоначальной вне блока synchronized уже выполняю метод обработки. Но это не компилируется из-за того, что в отличие от жавы в котлине это кложура:
Error:(31, 25) Kotlin: Smart cast to 'MutableMap<Path, DirObserver.ChangeType>' is impossible, because 'oldFiles' is a local variable that is captured by a changing closure
Как быть?
oldFiles?.let(::process)

ud1
27.01.2018
17:54:33
Спасибо

Igor
28.01.2018
13:10:18
насколько это generic-hell?)
abstract class ViperFragment<Model, Event, V: IView<Model, Event>, R: BaseRouter<*, *, *>, out P: ViperPresenter<Model, Event, V, R»: Fragment()

Vladimir
28.01.2018
13:15:23
насколько это generic-hell?)
abstract class ViperFragment<Model, Event, V: IView<Model, Event>, R: BaseRouter<*, *, *>, out P: ViperPresenter<Model, Event, V, R»: Fragment()
Жуть какая

Quantum Harmonizer
28.01.2018
13:19:18
насколько это generic-hell?)
abstract class ViperFragment<Model, Event, V: IView<Model, Event>, R: BaseRouter<*, *, *>, out P: ViperPresenter<Model, Event, V, R»: Fragment()
это больше inheritance-hell

Sergey
28.01.2018
15:20:44
какие есть варианты для лимитов на ресурсы с корутинами и без? к примеру есть апишка, к которой можно посылать только скажем 4 одновременных запроса, к нам из веба пришло 2 клиента, которым нужно по 10 запросов к этой апишке сделать
первое что приходит в голову это отдельный тред пул на 4 потока или семафора
с корутинами выходит немного сложнее, если хочешь все в рамках одного потока выполнить
я возможно не в ту сторону копаю даже?

Boris
28.01.2018
15:21:37

Igor
28.01.2018
16:00:45

Vladimir
28.01.2018
16:04:39
Тред пул не поможет, т.к. корутины на то и корутины, чтобы выполняться в большом количестве на маленьком количестве потоков.
Недавно столкнулся с такой же задачей и не нашёл в kotlinx.coroutines ничего подходящего. Уже начал писать велосипед поверх Mutex.

Google

l0rem
28.01.2018
16:09:57
Добрый вечер
Недавно загорелся идеей изучить Kotlin для воплощения в жизнь одной из идей. На данный момент работал лишь с Python (речь про ООП), Jav'у не трогал и особого желания читать доки по этому языку ради изучения другого не имею.
Пока не совсем понял пару вещей -
Таки стоит ли мне смотреть в сторону Java (просто куда ни плюнь все гении пишут про байткод и прочие прелести конвертации в Java)?
Если конечным продуктом является приложение для Android (а потом и IOS, но тут Swift выглядит более надёжно), то не стоит ли мне начать сразу с изучения работы с AndroidStudio?
Заранее спасибо.

Quantum Harmonizer
28.01.2018
16:12:13


l0rem
28.01.2018
16:21:36
Какова цель? Разработка под Android? Тогда Kotlin — лучший вариант, но знание Java всё же помогает, т. к. на ней написан и сам Android, и горы библиотек.
Работа в Android Studio не имеет каких-то решительных отличий от работы в PyCharm, например.
Нет, я не очень горю желанием разрабатывать под Android на постоянной основе. Просто у меня есть проект, который требует взаимодействия с пользователем. Тк я не работал в сфере моб. разработки я выбрал телеграм и запилил бота на питоне. По мере развития проекта стало понятно, что нужно свое приложение (желательно не белый экран с парой кнопок, а красивое и приятное средство взаимодействия).
+ я лично хочу потрогать Kotlin и научиться работать с ним, как с наиболее прогрессивным языком из Java-семьи. Python классный, но уже приелся.

Bogdan
28.01.2018
16:22:48
конечно еще маловато поектов, но быстро набираю темп

Sergey
28.01.2018
16:23:28

Bogdan
28.01.2018
16:23:39
поможет


Sergey
28.01.2018
16:24:55
дебажить правда это то еще веселье
дебагер совсем не умеет работать