@kotlin_lang

Страница 449 из 982
Сергей
07.12.2017
21:30:15
всем привет

как вкатиться в котлин?

умею в жс, раст, плюсы

Sergey
07.12.2017
21:32:43
Google
Andrew
07.12.2017
21:33:07
забываешь всё вышеперечисленное как страшный сон и въездаешь в котлин с осознанием, как же стало круто.

(шучу, конечно)

Руслан
07.12.2017
21:33:13
Начать с изучения языка в виде Kotlin Koans + читать документацию 1. Koans: https://github.com/Kotlin/kotlin-koans#other-ways-to-solve-koans 2. Доки: http://kotlinlang.org/docs/reference/ http://kotlinlang.ru 3. Книга: Kotlin in Action

Andrew
07.12.2017
21:34:30
для нэйтива жвм нужна только для сборки, но оно всё ещё на ранней стадии разработки, на него больновато смотреть. стоит начать с Kotlin/JVM.

? animufag ?
07.12.2017
21:36:57
видел, что котлин можно компилить в натив Тоже нужен javacore?
Котлин очень джвм. То есть там основная движуха и нетив/джс таргеты как дополнение к джвм-проекту. Ну хотя это моё мнение. Бтв, что ты хочешь от котлина получить? Существенная часть комьюнити пишут под андроид

Руслан
07.12.2017
21:37:36
@sergeysova а почему решил котлин изучать? Интерестен Kotlin/JS?

Сергей
07.12.2017
21:39:08
@sergeysova а почему решил котлин изучать? Интерестен Kotlin/JS?
мне не очень симпатична java но сам по себе язык котлин зацепил интересна возможность писать код для разных платформ на одном языке причем статически типизируемом языке с выводом типов это очень приятно конечно не flowtype, но уже хорошо

Руслан
07.12.2017
21:39:56
Круто, успехов в изучении! :)

Сергей
07.12.2017
21:40:09
спасибо!

Котлин очень джвм. То есть там основная движуха и нетив/джс таргеты как дополнение к джвм-проекту. Ну хотя это моё мнение. Бтв, что ты хочешь от котлина получить? Существенная часть комьюнити пишут под андроид
хочу сервер + эни чтобы не изучать два языка для полноценной разработки (другими словами фулстек) а то в итоге получается ts/flow/js/pure/* + go/rust/node/php/ruby/java/* слишком разрозненно, сложно применить знания в рандомном языке в случае котлина это будет проще, так как будет единая экосистема, хотя бы несколько приближена но интересует вопрос фронтенд разработки

какие если возможности интеграции с существующими js библиотеками, насколько производительный код получается на выходе? и есть ли фреймворки (вроде polymer/react/angular4/vue)?

Google
Сергей
07.12.2017
21:44:51
на бэкенде всё понятно, там очень давно всё есть, да хоть тот же spring ))) видел нормальную реализацию Rx, к слову это радует

Сергей
07.12.2017
21:45:35
для веба всё равно придётся js учить
ну я в нем профессионален)

Руслан
07.12.2017
21:46:25
какие если возможности интеграции с существующими js библиотеками, насколько производительный код получается на выходе? и есть ли фреймворки (вроде polymer/react/angular4/vue)?
1. интеграция: как в typescript - писать тайпинги либо работать через dynamic (any) 2. код специально не оптимизируют, только есть Ded code elimination 3. есть биндинги для реакта. с ангуляром > 1 сложно. полимер и вью - не вижу проблем.

Alexey
08.12.2017
01:16:03


Всем привет, Как можно такой код переписать на Kotlin. В частности интересует только вопрос с созданием массива байт и операция в условии цикла

Всем привет, Как можно такой код переписать на Kotlin. В частности интересует только вопрос с созданием массива байт и операция в условии цикла
Если кому интересно, нашел такое решение: fun File.copyInputStreamToFile(inputStream: InputStream) { inputStream.use { input -> this.outputStream().use { fileOut -> input.copyTo(fileOut) } } }Может кто-то знает что-нибудь лучше?)

Andrew
08.12.2017
05:49:20
byte[] -> ByteArray про цикл: while (true) { val bufferLength = ... if(bufferLength <= 0) break ... } (нет, иначе никак)

Andrew
08.12.2017
05:50:28
ну да, можно распинать библиотечную функцию, конечно. в апачёвых IOUtils было копирование по стримам, как минимум.

Andrey
08.12.2017
06:29:15
Привет всем, есть подвижки с решением этой проблемы? Или может хаки какие-нибудь?
Привет! Точно уже не помню, но дело было не в котлине :) кажется просто что то лежало не в том пакете, и не находил. Если опишешь, в чем у тебя проблема, может быть смогу помочь

Dmitry
08.12.2017
06:35:18
Привет! Точно уже не помню, но дело было не в котлине :) кажется просто что то лежало не в том пакете, и не находил. Если опишешь, в чем у тебя проблема, может быть смогу помочь
по сути ситуация схожая: есть 2 варианта файла с аннотацией Module, который провайдит Set<Interceptors>, для дебага там логгеры, для релиза пустой set. дебаг сборка норм собирается, релизная падает, как будто не видит класса. В джаве эта связка работала, с переходом на котлин дало сбой. Сейчас пробую sourceSets для релизной принудительно поставить, вроде в первый раз собралось

Dmitry
08.12.2017
06:42:50
сами классы лежат в отдельном от приложения модуле, структура следующая: src —debug —--java/<package>/injection/IntercepterModule —main —release —--java/<package>/injection/IntercepterModule

Andrey
08.12.2017
06:56:20
сами классы лежат в отдельном от приложения модуле, структура следующая: src —debug —--java/<package>/injection/IntercepterModule —main —release —--java/<package>/injection/IntercepterModule
Структура правильная, судя по упоминанию аннотации Module - там даггер. Если да, то может быть дело в капте?

Artur
08.12.2017
06:56:52
Есть ли в котлине функциональный аналог такой записи? (someObj as Clazz).doSomething() что-нибудь типа someObj.cast(Clazz).doSometing()

Google
Vladimir
08.12.2017
06:58:36
Artur
08.12.2017
06:59:16
С каких пор это называется функциональным программированием?
суть не в этом, а в том что хочется заменить запись as и скобки, на более читабельный аналог

Artur
08.12.2017
07:00:13
ок, а теперь as? вариант?

я написал аналог, но возможно есть решение из коробки

Vladimir
08.12.2017
07:01:28
ок, а теперь as? вариант?
http://kotlinlang.org/api/latest/jvm/stdlib/kotlin.reflect.full/safe-cast.html

Artur
08.12.2017
07:02:31
спасибо) а можно теперь направление сменить? чтобы не clazz cast someObj, а someObj cast to class

чтобы цепочка вызовов функций была более читабельная

вот в этом и вопрос изначальный

Vladimir
08.12.2017
07:04:52
Свой extension, только так. А вообще смысла в этом не вижу.

Artur
08.12.2017
07:08:14
Свой extension, только так. А вообще смысла в этом не вижу.
Ну да, так и сделал Если кому понадобится fun <T : Any> Any?.safeCast(kclass: KClass<T>): T? { return kclass.safeCast(this) } А смысл в этом в том что хочется заменить запись as и скобки, на более читабельный аналог

Vladimir
08.12.2017
07:10:59
Ну да, так и сделал Если кому понадобится fun <T : Any> Any?.safeCast(kclass: KClass<T>): T? { return kclass.safeCast(this) } А смысл в этом в том что хочется заменить запись as и скобки, на более читабельный аналог
Ради этого засорять extension'ами Any - ну такое. Мне кажется, ситуации, когда надо что-то кастовать в таком стиле должны быть достаточно редки.

Artur
08.12.2017
07:11:21
Ради этого засорять extension'ами Any - ну такое. Мне кажется, ситуации, когда надо что-то кастовать в таком стиле должны быть достаточно редки.
Сравни читабильность (getFromA().andThenFromB().andThenFromC() as? D)?.doWithD() getFromA().andThenFromB().andThenFromC().safeCast(D::class)?.doWithD()

Artur
08.12.2017
07:12:19
> достаточно редки. Пример, дергаем из any коллекции какие-то объекты, или дергаешь из fragmentManager'а в Android какой-то конкретный фрагмент

JRoot3D
08.12.2017
07:13:32
это удар jsом чтоль где не нужно ничего кастовать?

as вполне читабельная конструкция

Vladimir
08.12.2017
07:14:47
> достаточно редки. Пример, дергаем из any коллекции какие-то объекты, или дергаешь из fragmentManager'а в Android какой-то конкретный фрагмент
Не обязательно везде обмазываться цепочками вызовов. Достаточно выделить в отдельную переменную и там сделать as. И мне совершенно непонятно, зачем в этих случаях именно as?.

Artur
08.12.2017
07:14:51
Дела этого, как его там, вкуса

Google
JRoot3D
08.12.2017
07:15:26
Дела этого, как его там, вкуса
на ключевое слово внимание обращается быстрее

Vladimir
08.12.2017
07:15:39
Код игнорит неправильный тип у R.id.productsFragment. Зачем?

Artur
08.12.2017
07:16:01
это не рабочий пример, прислал для простоты

R.id.productsFragment может быть R.id.fragmentContainer где реально может быть любой fragment

Admin
ERROR: S client not available

Vladimir
08.12.2017
07:17:19
Так если нужно его скастовать к какому-то типу и дёрнуть метод, значит не может

С коллекциями то же самое

Artur
08.12.2017
07:17:55
Так если нужно его скастовать к какому-то типу и дёрнуть метод, значит не может
Ладно, ты очень убедительный и настоячивый. Выкину свои экстеншены буду давиться, но писать через as?

Vladimir
08.12.2017
07:19:38
Ладно, ты очень убедительный и настоячивый. Выкину свои экстеншены буду давиться, но писать через as?
Ну мне просто непонятно, зачем игнорить явно неправильное состояние, если можно (нужно?) кричать и крэшить приложение. Чтобы исправить это сразу, не дожидаясь отзывов о приложении "ничего не работает".

Andrey
08.12.2017
07:22:34
Так там в одном методе возвращается лист, а в другом интерсептор

Может быть дело в этом? Как выглядит ошибка сборки?

Dmitry
08.12.2017
07:31:44
@dosssik, но все равно спасибо за помощь ?

Может быть дело в этом? Как выглядит ошибка сборки?
не, все таки падает: okhttp3.Interceptor cannot be provided without an @Provides-annotated method. Значит, все-таки надо без списка возвращать.

N
08.12.2017
07:40:40
https://angular-university.io/lesson/angular-for-beginners-welcome

Andrey
08.12.2017
07:40:49
не, все таки падает: okhttp3.Interceptor cannot be provided without an @Provides-annotated method. Значит, все-таки надо без списка возвращать.
смотри, тут дело в понимании даггера. на скриншоте выше ты интерсептор передаешь параметром в метод provideOkHttpClient. Тип переменной Interceptor. Что бы этот метод даггером зарезовился ему нужно найти провайды для всех входящих аругментов. А если у тебя метод провайдит List<Interceptor>, то даггер его не найдет, отсюда и ошибка.

Если ты в provideOkHttpClient передаешь Interceptor, то и возвращаемый тип у провайд-метода должен быть Interceptor

Dmitry
08.12.2017
07:44:33
Если ты в provideOkHttpClient передаешь Interceptor, то и возвращаемый тип у провайд-метода должен быть Interceptor
тоже так думаю, такую конструкцию со списком ранее не юзал, пока не посоветовали

Google
Andrey
08.12.2017
07:46:00
Dmitry
08.12.2017
07:46:12
не, не взлетает

Andrey
08.12.2017
07:47:57
?

Андрей
08.12.2017
07:48:00
Ребята, в проекте на котлине решил использовать room. Но возникла необходимость использовать динамические queries. Похоже room этого не умеет, но может, есть вартанты? Очень не хочется переписывать room на sql helper

Andrey
08.12.2017
07:49:26
точнее, наоборот, взлетает
Ну вот. Можено и список возвращать, но тогда в аргументах provideOkHttpClient должен быть список

Andrey
08.12.2017
07:54:18
Dmitry
08.12.2017
07:54:47
Dmitry
08.12.2017
10:46:44
Куда стоит постить баг в котлин плагине андроид студии? Студия подсвечивает ошибку и не может зарезолвить зависимость, но всё компилируется как и должно.

Kirill
08.12.2017
10:47:17
kotl.in/issue

Dmitry
08.12.2017
10:51:45
т.е. не гуглу. Ок, спасибо.

Quantum Harmonizer
08.12.2017
10:52:10
т.е. не гуглу. Ок, спасибо.
Котлин плагин JB делает, а не гугл. У гугла свой трекер.

Vladimir
08.12.2017
10:54:10
т.е. не гуглу. Ок, спасибо.
Не удивлюсь, если на самом деле проблема в Andoid-плагине

Страница 449 из 982