@kotlin_lang

Страница 452 из 982
Vladimir
12.12.2017
07:02:22
Если у item много полей и ко всем нужно обратиться, можно завернуть этот код в блок with и не писать каждый раз item.

Artur
12.12.2017
07:03:06
т.е. получается передавая в with ссылку на объект, мы как бы говорим что содержимое этого блока будет как эта ссылка

Artem
12.12.2017
07:03:26
Т.е. тебе не надо по 5 раз писать prop.blabla = 5 prop.albalb = 6 prop.qwer = 7 , Ты просто пишешь with(prop) { blabla = 5 albalb = 6 qwer = 7 }

Artur
12.12.2017
07:03:45
ясно, очень круто

Google
Artur
12.12.2017
07:03:52
спасибо за разъяснение

Artem
12.12.2017
07:05:02
Т.е. тебе не надо по 5 раз писать prop.blabla = 5 prop.albalb = 6 prop.qwer = 7 , Ты просто пишешь with(prop) { blabla = 5 albalb = 6 qwer = 7 }
Сам prop в этом случае у тебя будет в {} как this, если вдруг что-то надо будет. Например: with(prop) { blabla = 5 doSomething(this) }

Artur
12.12.2017
07:05:27
ага, сейчас понятно всё

Artem
12.12.2017
07:06:06
Есть где-то статья на медиуме хорошая, там парень разъясняет о различии let, run, with, apply, also и т.д.

Я думаю если загуглишь, то найдешь легко

Sereja
12.12.2017
07:06:43
И на сайте котлина есть разъяснения)

Artem
12.12.2017
07:06:55
А, ну или так

Sereja
12.12.2017
07:07:28
И на стакоферфлов полно таких вопросов

Vladimir
12.12.2017
09:08:53
Всем привет, может кто может подсказать как можно реализовать это более в котлин стиле ? https://gist.github.com/anonymous/ea359c9ce73add5843a4f1b823ffe38a

balolam
12.12.2017
09:14:49
1. Избавьтесь от дубликации кода

2. От nullable

(Дубликации в методах, у них отличие лишь в том, под каким ключем данные тянут)

И не стоит пытаться делать в Kotlin стиле, код должен быть просто читабелен. Котлин это инструмент, без фанатизма)

Google
Руслан
12.12.2017
09:21:38
Имхо выкинуть absctract class, использовать interface + class delegation если хочется какое-то стандартное поведение

Vadim
12.12.2017
09:40:13
А как добавить корректно условие чтобы результат сложения был > 0 (не отрицательным) fun calculateStartAngle(startAngle: Float, sweepAngle: Float): Float = startAngle + sweepAngle + OFFSET_BETWEEN_SECTORS

Slava
12.12.2017
09:44:40
abs()?

Vladimir
12.12.2017
09:47:29
Спасибо за ответы, подумаю

Vadim
12.12.2017
09:54:20
@gLush не подходит, так как получится что при отрицательных значениях аргумента, он мне сделает число просто положительным.

pplcf
12.12.2017
09:54:39
Math.max

т.е макс

Vadim
12.12.2017
09:58:30
@pplcf ну он будет возвращать наибольшее значение из двух а если они оба отрицательны?

pplcf
12.12.2017
09:59:09
ну отправь туда результат сложения

и число 1

если тебе нужно быть всегда > 0

Vadim
12.12.2017
10:00:22
@@pplcf спасибо, но похоже больше на костыль) я ещё подумаю ...)

Slava
12.12.2017
10:09:27
Задача нужна. Что за углы и в чем. Если нужно привести в положительный эквивалентный угол - добавить 360 к отрицательному. Или эквивалент в радианах.

Vadim
12.12.2017
10:28:42
@gLush да я думаю лучше просто добавить условие чтобы если какой то из аргументов отрицательный, то вообще не идти дальше

@gLush хотя тоже пока не айс решение))

@gLush но то что приводить к полоительному их не надо, это факт)

Boris
12.12.2017
14:04:54
а кто знал про такю функцию из стандатной библиотеки, называется listOfNotNull?

хорошо в для котлина уже много подсказок по трансформации, идея мне сама подсказала, что можно без лишних итераций сделать

Михаил
12.12.2017
14:10:35
подсказки ток и спасают, там уже столько экстеншенов наворотили, что их нужно отдельно зубрить)

gxwin
12.12.2017
14:12:55
подсказки ток и спасают, там уже столько экстеншенов наворотили, что их нужно отдельно зубрить)
придет время и их начнут группировать в классы и в котлин появятся статические классы? :)

Google
gxwin
12.12.2017
14:14:01
...и еще напишут статью, что это мировая практика группировать в классы, теперь вот так делайте правильно и прекращайте импортировать со звездочкой :)

Igor
12.12.2017
14:14:59
Сделают окамл-модули

Вот иногда жалко что нельзя делать import внутри object (чем не независимые-модули)

gxwin
12.12.2017
14:21:22
from exfun import listOfNotNull, mapOfNotNull :)

Гадкий
12.12.2017
14:21:29


Руслан
12.12.2017
14:25:31
...и еще напишут статью, что это мировая практика группировать в классы, теперь вот так делайте правильно и прекращайте импортировать со звездочкой :)
Намешал wildcard импорты с импортом статических функций. Наверно хотелось отослать к старым-добрым истинам из джавы, которые якобы в Kotlin не понимают и не помнят, а я вот так умный вижу как все на самом деле? :) Но да ладно. Проблема как всегда одна - люди не читают доки, и не изучают API. Вот и получается что экстеншены в проекте - это круто, удобно и юзабельно. А вот экстеншены из либы - нет. А все потому что разработчики не читают доки, не изучают API, а еще экстеншены в autocompete идут после мемберов и поэтому теряются. Поэтому в bootique-kotlin заменил экстеншены для guice на полноценные обертки, чтобы изначально API был нативный для котлина.

Dibro
12.12.2017
14:26:10
а что будет?

Руслан
12.12.2017
14:26:35
Тебе обязательно помогут в @kotlin_mobile

Гадкий
12.12.2017
14:26:38
а что будет?
нашел решение: http://kotlinlang.org/docs/reference/whatsnew12.html#checking-whether-a-lateinit-var-is-initialized

Гадкий
12.12.2017
14:26:52
presenter.isInitialized

Vitalii
12.12.2017
14:26:56
Тебе обязательно помогут в @kotlin_mobile
Какая связь? У людей не может быть презентера вне андроид приложений?

Dibro
12.12.2017
14:27:13
да кстати, причём тут мобайл?

Саша
12.12.2017
14:27:24
Тебе обязательно помогут в @kotlin_mobile
Oго, уже и такое есть, спасибо за ссыль))

Руслан
12.12.2017
14:28:56
Какая связь? У людей не может быть презентера вне андроид приложений?
Ну явно человек с андроида пришел, я подозреваю в андроид есть паттеры чтобы презентер в конструктор например засунуть и не городить костыли. Поэтому и посоветовал в @kotlin_mobile зайти

Гадкий
12.12.2017
14:29:58
кейс же котлиновский

Руслан
12.12.2017
14:29:59
Можно пример с github? (про замену в bootique)
Ну вот этот файлик https://github.com/bootique/bootique-kotlin/blob/master/bootique-kotlin/src/main/java/io/bootique/kotlin/guice/KotlinModule.kt

кейс же котлиновский
Поэтому не android чат, а kotlin android)

Гадкий
12.12.2017
14:31:07
ладно, такой вопрос. Можно ли lateinit "обнулить" после инициализации?

gxwin
12.12.2017
14:31:30
bootique-kotlin - что это и зачем оно тут? Я вообще про этот адок import io.ktor.application.* import io.ktor.features.* import io.ktor.http.* import io.ktor.response.* import io.ktor.routing.* import io.ktor.server.engine.* import io.ktor.server.jetty.*

Google
Саша
12.12.2017
14:33:20
Ruslan, откуда у вас такая топовая футболка? ??

gxwin
12.12.2017
14:33:22
Это прям в сорцах ktor, это не я так пишу)

может ошибаюсь

Михаил
12.12.2017
14:34:40
presenter.isInitialized
this::presenter.isInitialized если точнее

gxwin
12.12.2017
14:34:45
надеюсь не за так столько эмоций

Руслан
12.12.2017
14:35:05
Ruslan, откуда у вас такая топовая футболка? ??
Организуйте сообщество, митап, попросите у JetBrains мерча. http://kotlinlang.org/community/user-groups.html#if-there-is-no-kug-in-your-area-make-a-new-one

Гадкий
12.12.2017
14:36:03
this::presenter.isInitialized если точнее
ну в моем случае так) тогда надо как-то эту переменную обнулять. Похоже надо использовать val presenter: P? = null

Admin
ERROR: S client not available

Osip
12.12.2017
14:40:07
Да

Alexander
12.12.2017
15:24:33
Если про property говорить: https://github.com/Kotlin/KEEP/pull/73/files

Гадкий
12.12.2017
15:26:02
неплохо

Arthur
12.12.2017
15:45:40
Всем привет! Я тут недавно заинтересовался Котлином и у меня возник вопрос: насколько быстро можно поднять простой сайтик на котлине? И если писать веб приложение и мобильный клиент (или мобильное приложение с таким же функционалом, но работающим локально, без подключения к внешним сервисам) - будет ли код похож между веб версией и мобильной? Если да, то на сколько?

Даниил
12.12.2017
15:47:59
веб-версия - это браузерная часть на котлине что ли?

Arthur
12.12.2017
15:53:54
Общим будет в лучшем случае код по получению моделей из бекенда и сами модели. Возможно еще какая простая сахарная логика (вроде отправки данных в аналитику).
Тоесть имеет смысл бек энд наклепать на пхп, в котором есть кое какой опыт. А мобильное приложение уже писать на kt?

Google
Arthur
12.12.2017
15:57:21
веб-версия - это браузерная часть на котлине что ли?
Ага, та часть котрую пишут на php/nodejs/ruby/other)) вообще в чем преимущество java/kotlin’а перед вышу упомянутым как то не могу вычислить... Видел как хабре парень приводил пример как быстро что то собрать на spring boot но я его подвиг повторить не смог ибо крашнулась java sdk

Даниил
12.12.2017
15:57:48
на php/nodejs/ruby не пишут браузерную часть

Andrei
12.12.2017
15:58:00
angular

Даниил
12.12.2017
15:58:01
на этих языках пишут серверную часть

Andrei
12.12.2017
15:58:03
и тд

Даниил
12.12.2017
15:58:13
а серверу вообще всё равно что там на клиенте

Andrei
12.12.2017
15:58:18
угу

Даниил
12.12.2017
15:58:21
отдаёшь JSON и всё

Anton
12.12.2017
15:59:19
да спринг бут за пару минут разворачивается

спаркджава за минуту

Arthur
12.12.2017
15:59:50
на этих языках пишут серверную часть
Точняк. Видимо на работе слишком устал и не понял о чем речь...

Andrei
12.12.2017
16:01:18
для бек-енда на котлине есть https://github.com/ktorio/ktor

gxwin
12.12.2017
16:01:23
Ага, та часть котрую пишут на php/nodejs/ruby/other)) вообще в чем преимущество java/kotlin’а перед вышу упомянутым как то не могу вычислить... Видел как хабре парень приводил пример как быстро что то собрать на spring boot но я его подвиг повторить не смог ибо крашнулась java sdk
единственное преимущество - в многопоточности, если тебе такое не нужно то в джаву лезть и не нужно. Как минимум в такой многопоточной архитектуре - появляться возможность сделать супервизор (например чтобы отловить дабл-клик запросы, если это важно, например игра или банковское приложение и т.д.).

Andrei
12.12.2017
16:01:57
и еще Spring 5 поддерживает Kotlin

gxwin
12.12.2017
16:06:06
единственное преимущество - в многопоточности, если тебе такое не нужно то в джаву лезть и не нужно. Как минимум в такой многопоточной архитектуре - появляться возможность сделать супервизор (например чтобы отловить дабл-клик запросы, если это важно, например игра или банковское приложение и т.д.).
можно еще прикрутить вопрос кэширование (так как у нас многопоточное приложение, а не на процессах и мы можем прям в приложение хранить данные), но лучше этого не делать, так как придется все переписать, когда встанет вопрос масштабирования. Больше преимуществ нет (не считая специфику языков, типа статическая типизация, если она нужна)

Vadim
12.12.2017
16:53:05
Внимание, сейчас будет вопрос - "Так себе"!) Можно ли написать условие boolean так чтобы оно мол типо проверяло если это последний элемент в списке?)

что то типо if(list.last()) something()

Alexander
12.12.2017
17:02:24
что то типо if(list.last()) something()
if(element == list.last()) doSomething()

Vadim
12.12.2017
17:05:10
Alexander а сам element объявить выше? типо var element = ???

Alexander
12.12.2017
17:07:40
Чего добиться пытаешься? list.last() тебе даст последний элемент

Vadim
12.12.2017
17:17:53
Alexander это да, но сам element мне же надо правильно проинициализировать? учитываю что у меня private val list: List<Phones>

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