
Anton
14.05.2018
12:27:25
так ты же не знаешь когда выйдет 1.3 )

Костя
14.05.2018
12:27:27
не пойму в чем вообще проблема )
так хотя бы примерное представление появилось про версию уже

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

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-ов — проще жить.

akniyet
14.05.2018
13:27:33

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 никак

Quantum Harmonizer
14.05.2018
16:40:26

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

Bogdan
14.05.2018
17:08:39

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

Kirill
14.05.2018
17:16:41
+ табличка кто за что отвечает

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

Kirill
14.05.2018
17:18:50

Bogdan
14.05.2018
17:19:47

dimiii
14.05.2018
17:20:09

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

dimiii
14.05.2018
17:22:36

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

Bogdan
14.05.2018
17:25:26
нада копать

dimiii
14.05.2018
17:26:35

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

Gleb
14.05.2018
17:28:55

Konstantine
14.05.2018
17:29:23

Bogdan
14.05.2018
17:29:32

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

Konstantine
14.05.2018
17:31:27

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

dimiii
14.05.2018
17:32:33

Gleb
14.05.2018
17:32:52
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html

Bogdan
14.05.2018
17:33:37

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
нет

Kirill
14.05.2018
20:24:10

Igor
14.05.2018
20:24:58

Vladimir
14.05.2018
20:26:08

Igor
14.05.2018
20:30:57

Vladimir
14.05.2018
20:32:01

Mikhail
14.05.2018
21:50:09

Pavel
14.05.2018
21:54:13

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

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, например, для работы с файлами.