@kotlin_lang

Страница 667 из 982
Anton
14.05.2018
12:27:25
так ты же не знаешь когда выйдет 1.3 )

Костя
14.05.2018
12:27:27
не пойму в чем вообще проблема )

так ты же не знаешь когда выйдет 1.3 )
ну это уже конкретные цифры, проще будет нагуглить попытаться ))

так хотя бы примерное представление появилось про версию уже

Google
ISkylake
14.05.2018
12:29:12
всё ещё в ожидании, что они пофиксят https://youtrack.jetbrains.com/issue/KT-23671 к 1.3

akniyet
14.05.2018
12:59:47


Vladislav
14.05.2018
13:00:52
break)

akniyet
14.05.2018
13:01:18
break)
нету break

Gleb
14.05.2018
13:02:00


точно, он ведь не остановится

сорян

Roman
14.05.2018
13:02:32
Это будет continue,

Чтобы в том коде сделать break, надо просто сказать return position

akniyet
14.05.2018
13:06:05
Roman
14.05.2018
13:13:20
И вообще там var position не нужен. Нету var-ов — проще жить.

Igor
14.05.2018
14:00:06
https://i.gyazo.com/ba834a52158006114db283f75d0a8a4a.png Очень императивный код, лучше переписать на indexOfFirst и кстати прокидывать tasks нулабл-типом тоже не очень красиво.

Google
Mikhail
14.05.2018
15:34:29
вопрос по делегации class FooStrategy : Strategy by BarStrategy() { override fun foo() { bar.foo() // Типа вызов BarStrategy afterBarFoo() } } Как здесь сделать вызов BarStrategy, если она не передается полем в конcтруктор? никак?

Bogdan
14.05.2018
16:05:06
без обекта BarStrategy никак

Mikhail
14.05.2018
16:58:17
Да, и кажется, до меня дошло, почему именно так. Чудес не бывает(

Alexey
14.05.2018
17:13:38
Вопрос не имеющий отношения именно к котлину в частности. Кто работает на компании долгое время, как вы организуете сохранение и передачу знаний о проекте? Ну, т.е. условно - недопустимость ситуации вида "тут миграция данных отвалилась между двумя сервисами и никто даже не знает что это за скрипт и на каком сервере его искать"

Alexey
14.05.2018
17:18:08
Пробовали confluence, но выключили по сочетанию дорого + неудобно. Разрабов приходилось прямо пинать туда что-то отписывать, собственно я поэтому и задумался, что может есть более удобный инструмент?

Alexey
14.05.2018
17:21:30
Нет, это не моя работа, ты заблуждаешься ? Но это неважно, меня интересует где впринципе наиболее рабочий/удобный баланс между "учить ответственности" и "перекладывать ответственность".

Alexey
14.05.2018
17:23:01
Я где-то между, мне полномочий менеджера никто не давал

Bogdan
14.05.2018
17:24:01
Я где-то между, мне полномочий менеджера никто не давал
"золотой середины" не бывает или там, или там

а вообще если человек не отвецтвенный то мало от него толку

Alexey
14.05.2018
17:24:47
Просто пытаюсь порядок навести в своем болоте ? Есть версия что если мне приходится каждого коллегу бить по голове "эй, обнови доку по своему сервису!" - то им это делать, видимо, неудобно. Надо придумать как сделать чтобы было всем удобно, потому сейчас спрашиваю у кого как это все устроено.

Google
Konstantine
14.05.2018
17:25:20
А как в котлине реализован интерфейс листа? Он же вроде от джавовского идет, но у джавовского есть сразу всякие add, remove

Alexey
14.05.2018
17:27:42
Хм, интересная затея.

Konstantine
14.05.2018
17:29:23
List - неизменяемый MutableList - «как джавовский»
Так а как получился лист такой? Он разве не элиас к стандартному?

Bogdan
14.05.2018
17:29:32
List - неизменяемый MutableList - «как джавовский»
я думаю вопрос как они подмеляются ведь в джаве используется обычный List

Konstantine
14.05.2018
17:29:38
И если нет, то как он может быть совместим

dimiii
14.05.2018
17:29:45
Хм, интересная затея.
Вот кстати https://marketplace.atlassian.com/apps/1211213/karma-for-confluence?hosting=server&tab=overview

Gleb
14.05.2018
17:30:57
Так а как получился лист такой? Он разве не элиас к стандартному?
Прикольный вопрос У меня есть такой же о котлиновском String после доклада Бреслава на GoogleIO

Alexander
14.05.2018
17:31:47
Утверждается, что подмена на этапе компиляции

dimiii
14.05.2018
17:32:33
Так а как получился лист такой? Он разве не элиас к стандартному?
Нет, хотя бы потому что ковариантен, в отличии от инвариантного изменяемого

Gleb
14.05.2018
17:32:52
А что со стрингом?
То, что в котлине у него своих 4 метода, а остальное - экстеншены

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html

Bogdan
14.05.2018
17:33:37
То, что в котлине у него своих 4 метода, а остальное - экстеншены
я думаю что бы стандартный стринг заменить

Alexander
14.05.2018
17:33:47
Google
Bogdan
14.05.2018
17:34:40
магии нет это та же джава)

Vladimir
14.05.2018
17:50:12
Kotlin in action не читали что ли? Там же как раз про List и пишут

Bogdan
14.05.2018
17:52:07
да не

я по докам

Vladimir
14.05.2018
20:23:02
С опытом такое становится легко читать? // Composes 2 functions fun <A, B, C> ((A) -> B).c(f: (B) -> C): (A) -> C = {     f(this(it)) }

?
14.05.2018
20:23:38
нет

Igor
14.05.2018
20:24:58
С опытом такое становится легко читать? // Composes 2 functions fun <A, B, C> ((A) -> B).c(f: (B) -> C): (A) -> C = {     f(this(it)) }
Может быть, только откуда в котлине такой опыт? Так же никто не пишет.

Vladimir
14.05.2018
20:26:08
Может быть, только откуда в котлине такой опыт? Так же никто не пишет.
Смотрю статью Фернандо про архитектуру. Его код. И вот тут вообще не понимаю что происходит

Igor
14.05.2018
20:30:57
Vladimir
14.05.2018
20:32:01
Ты про "Architecting Android...Reloaded"? Я там не вижу ничего такого.
Да. https://github.com/android10/Android-CleanArchitecture-Kotlin/blob/master/app/src/main/kotlin/com/fernandocejas/sample/core/functional/Either.kt

Mikhail
14.05.2018
21:50:09
С опытом такое становится легко читать? // Composes 2 functions fun <A, B, C> ((A) -> B).c(f: (B) -> C): (A) -> C = {     f(this(it)) }
Гораздо приятнее если это будет инфиксная функция с более читабельным названием типа compose или comp.

Mikhail
14.05.2018
22:01:29
Vladimir
14.05.2018
22:09:22
Я в принципе плохо понимаю, что там вообще происходит, но не понимаю вообще что такое .c и откуда это с взялось? Я про .с(f: (B) ->... Котлин только осваиваю...

Alexander
14.05.2018
22:48:03
Я в принципе плохо понимаю, что там вообще происходит, но не понимаю вообще что такое .c и откуда это с взялось? Я про .с(f: (B) ->... Котлин только осваиваю...
Материал по документациям, если не понятны использованные конструкции языка: https://kotlinlang.org/docs/reference/extensions.html https://kotlinlang.org/docs/reference/lambdas.html Формальная вещь, которая была выражена этим 'c': https://en.wikipedia.org/wiki/Function_composition (смотреть раздел примеров, остальное наверное просто так читать не стоит) Если своими словами. У нас есть данные. И мы их хотим как-то менять. Умножать, предвращать в другие типы данных и тд. Такое изменение может быть выражено функцией. Ну например: val multiplyByTwo = { x: Int -> 2 * x } Так мы получили функцию, которая берёт число и возвращает число, умноженное на два. val reverseAsString = { x: Int -> x.toString().reversed() } Так мы развернули цифры числа и вернули строку. Если мы хотим применить их, то мы просто пишем multiplyByTwo(5) или reverseAsString(123) Если хотим применить их вместе, то мы можем написать reverseAsString(multiplyByTwo(432)) Если же мы хотим получить такую функцию, которая будет делать тоже самое, но не прямо сейчас, то можно написать примерно то же самое: multiplyByTwoThenReverseAsString = { x: Int -> reverseAsString(multiplyByTwo(x)) } Однако хочется писать проще, чем каждый раз воротить такие конструкции. Особенно если функций будет не две, а больше. И выше написанная функция в какой-то мере помогает, т.к. можно написать: multiplyByTwoThenReverseAsString = multiplyByTwo.c(reverseAsString) Кода стало меньше (Прошу прощения за большие названия, мне лень придумывать лучше) Как упомянул Михаил, можно ещё лучше, т.к. просто функция в одну букву читается не очень хорошо. Да и скобочки не помогают. Хотелось бы что-то вроде: multiplyByTwoThenReverseAsString = multiplyByTwo andThen reverseAsString И в целом, так тоже можно: infix fun <A, B, C> ((A) -> B).andThen(f: (B) -> C): (A) -> C = { f(this(it)) } Дока: https://kotlinlang.org/docs/reference/functions.html#infix-notation Наверное всё. Код может не работать, т.к. писался сразу сюда.

OlegKrikun
14.05.2018
22:52:15
?

Vladimir
14.05.2018
23:38:38
Материал по документациям, если не понятны использованные конструкции языка: https://kotlinlang.org/docs/reference/extensions.html https://kotlinlang.org/docs/reference/lambdas.html Формальная вещь, которая была выражена этим 'c': https://en.wikipedia.org/wiki/Function_composition (смотреть раздел примеров, остальное наверное просто так читать не стоит) Если своими словами. У нас есть данные. И мы их хотим как-то менять. Умножать, предвращать в другие типы данных и тд. Такое изменение может быть выражено функцией. Ну например: val multiplyByTwo = { x: Int -> 2 * x } Так мы получили функцию, которая берёт число и возвращает число, умноженное на два. val reverseAsString = { x: Int -> x.toString().reversed() } Так мы развернули цифры числа и вернули строку. Если мы хотим применить их, то мы просто пишем multiplyByTwo(5) или reverseAsString(123) Если хотим применить их вместе, то мы можем написать reverseAsString(multiplyByTwo(432)) Если же мы хотим получить такую функцию, которая будет делать тоже самое, но не прямо сейчас, то можно написать примерно то же самое: multiplyByTwoThenReverseAsString = { x: Int -> reverseAsString(multiplyByTwo(x)) } Однако хочется писать проще, чем каждый раз воротить такие конструкции. Особенно если функций будет не две, а больше. И выше написанная функция в какой-то мере помогает, т.к. можно написать: multiplyByTwoThenReverseAsString = multiplyByTwo.c(reverseAsString) Кода стало меньше (Прошу прощения за большие названия, мне лень придумывать лучше) Как упомянул Михаил, можно ещё лучше, т.к. просто функция в одну букву читается не очень хорошо. Да и скобочки не помогают. Хотелось бы что-то вроде: multiplyByTwoThenReverseAsString = multiplyByTwo andThen reverseAsString И в целом, так тоже можно: infix fun <A, B, C> ((A) -> B).andThen(f: (B) -> C): (A) -> C = { f(this(it)) } Дока: https://kotlinlang.org/docs/reference/functions.html#infix-notation Наверное всё. Код может не работать, т.к. писался сразу сюда.
Спасибо :)

Mikhail
15.05.2018
08:05:23
?

Igor
15.05.2018
08:22:57
Материал по документациям, если не понятны использованные конструкции языка: https://kotlinlang.org/docs/reference/extensions.html https://kotlinlang.org/docs/reference/lambdas.html Формальная вещь, которая была выражена этим 'c': https://en.wikipedia.org/wiki/Function_composition (смотреть раздел примеров, остальное наверное просто так читать не стоит) Если своими словами. У нас есть данные. И мы их хотим как-то менять. Умножать, предвращать в другие типы данных и тд. Такое изменение может быть выражено функцией. Ну например: val multiplyByTwo = { x: Int -> 2 * x } Так мы получили функцию, которая берёт число и возвращает число, умноженное на два. val reverseAsString = { x: Int -> x.toString().reversed() } Так мы развернули цифры числа и вернули строку. Если мы хотим применить их, то мы просто пишем multiplyByTwo(5) или reverseAsString(123) Если хотим применить их вместе, то мы можем написать reverseAsString(multiplyByTwo(432)) Если же мы хотим получить такую функцию, которая будет делать тоже самое, но не прямо сейчас, то можно написать примерно то же самое: multiplyByTwoThenReverseAsString = { x: Int -> reverseAsString(multiplyByTwo(x)) } Однако хочется писать проще, чем каждый раз воротить такие конструкции. Особенно если функций будет не две, а больше. И выше написанная функция в какой-то мере помогает, т.к. можно написать: multiplyByTwoThenReverseAsString = multiplyByTwo.c(reverseAsString) Кода стало меньше (Прошу прощения за большие названия, мне лень придумывать лучше) Как упомянул Михаил, можно ещё лучше, т.к. просто функция в одну букву читается не очень хорошо. Да и скобочки не помогают. Хотелось бы что-то вроде: multiplyByTwoThenReverseAsString = multiplyByTwo andThen reverseAsString И в целом, так тоже можно: infix fun <A, B, C> ((A) -> B).andThen(f: (B) -> C): (A) -> C = { f(this(it)) } Дока: https://kotlinlang.org/docs/reference/functions.html#infix-notation Наверное всё. Код может не работать, т.к. писался сразу сюда.
Код лучше в ''' оборачивать, а то сливается все

Google
Quantum Harmonizer
15.05.2018
08:24:43
в ``` :)

Alexander
15.05.2018
08:29:16
Жабра
15.05.2018
09:42:22
Материал по документациям, если не понятны использованные конструкции языка: https://kotlinlang.org/docs/reference/extensions.html https://kotlinlang.org/docs/reference/lambdas.html Формальная вещь, которая была выражена этим 'c': https://en.wikipedia.org/wiki/Function_composition (смотреть раздел примеров, остальное наверное просто так читать не стоит) Если своими словами. У нас есть данные. И мы их хотим как-то менять. Умножать, предвращать в другие типы данных и тд. Такое изменение может быть выражено функцией. Ну например: val multiplyByTwo = { x: Int -> 2 * x } Так мы получили функцию, которая берёт число и возвращает число, умноженное на два. val reverseAsString = { x: Int -> x.toString().reversed() } Так мы развернули цифры числа и вернули строку. Если мы хотим применить их, то мы просто пишем multiplyByTwo(5) или reverseAsString(123) Если хотим применить их вместе, то мы можем написать reverseAsString(multiplyByTwo(432)) Если же мы хотим получить такую функцию, которая будет делать тоже самое, но не прямо сейчас, то можно написать примерно то же самое: multiplyByTwoThenReverseAsString = { x: Int -> reverseAsString(multiplyByTwo(x)) } Однако хочется писать проще, чем каждый раз воротить такие конструкции. Особенно если функций будет не две, а больше. И выше написанная функция в какой-то мере помогает, т.к. можно написать: multiplyByTwoThenReverseAsString = multiplyByTwo.c(reverseAsString) Кода стало меньше (Прошу прощения за большие названия, мне лень придумывать лучше) Как упомянул Михаил, можно ещё лучше, т.к. просто функция в одну букву читается не очень хорошо. Да и скобочки не помогают. Хотелось бы что-то вроде: multiplyByTwoThenReverseAsString = multiplyByTwo andThen reverseAsString И в целом, так тоже можно: infix fun <A, B, C> ((A) -> B).andThen(f: (B) -> C): (A) -> C = { f(this(it)) } Дока: https://kotlinlang.org/docs/reference/functions.html#infix-notation Наверное всё. Код может не работать, т.к. писался сразу сюда.
Очень годно, благодарю. Правда this(it) в конце выглядит так себе.)

Dumitru
15.05.2018
10:18:28
как обработать (получить данные) из этого post запроса через ktor ?





возможно глупо..

но первый раз это делаю

Quantum Harmonizer
15.05.2018
10:22:49
и что выводит?

https://stackoverflow.com/a/46385342/3050249

Dumitru
15.05.2018
10:24:38
и что выводит?
не выводит что нужно, пишет null..

Vladislav
15.05.2018
10:27:44
Господа, а вот такой вопрос. Допустим я хочу написать на Kotlin Native консольную прогу, которая будет работать с файлами, обработка командной строки и т.д. Сейчас смотрю в стандартную либу там ничего такого нет. В основном только JVM. Что мне делать?

Есть ли уже какой нибудь "npm" для котлиновских либ, где можно пошукать?

Roman
15.05.2018
10:29:39
import platform.posix.*

Vladislav
15.05.2018
10:30:46
а есть хелпа на этот счёт какая-нибудь? что из posix поддерживается

и вот еще повторюсь, аналог maven/npm.. для котлиновских либ существует, планируется?

ибо для JVM вся инфраструктура есть, а вот для либ на чистом котлине такого я не заметил

Roman
15.05.2018
10:37:01
Либы на чистом котлине в Bintray. Есть уже много JVM+JS либ. На Native инфрастуктура для публикации либ еще только отлаживается. Скоро будет.

Posix есть весь. fopen/fread/fwrite, например, для работы с файлами.

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