
Andrew
14.12.2017
10:58:53
Go тоже отдалённо попахивает академиками, а не практиками, ибо очень opinionated design. причём пояснить, чем ООП в Go хорошо, мне никто так и не смог -- обычно слышу чёт в духе "раз так решили умные дядьки в гугле -- значит так надо". Спасибо JB за то, что завезли корутины с каналами в Kotlin и везут LLVM, я уже боялся, что в Go придётся нырять в будущем.

Руслан
14.12.2017
11:01:28
Парни, давайте обсуждение других языков делать в @jvmchat, там есть множество полиглотов-экспертов

I
14.12.2017
12:06:53
Ребята спасибо всем за высказанное мнение. Хочу добавить от себя пока мне трудно оценить техническую сторону от использования котлин, но сейчас я вижу такой же хайп вокруг котлин как когда-то был после выхода джава 2. Плюс спрос на спецов по котлин растёт так что думаю за ним будущее андроид разработки. Это моё личное мнение

Anton
14.12.2017
12:08:20
ты помнишь джава 2 а спрашиваешь какие то страные вопросы по рефакторингу?)

Google

Anton
14.12.2017
12:08:31
джава 2 эт какой год 99?

? animufag ?
14.12.2017
12:09:16
даа норм тогда хайпанули

Nikita
14.12.2017
12:13:18
Есть возможность сделать ассоциативный список с возможностью его изменения во время работы программы ?

I
14.12.2017
12:13:56
джава 2 эт какой год 99?
Юзать его тут начали в 2000-2001 пошёл в массы. Жизнь она нелинейная поэтому сегодня ты программируешь, а завтра забываешь как сделать хелоу ворлд. А потом проходит 10-15 лет и ты начинаешь вновь. Вообще тогда я был на стороне делфи а джава был для гиков и энтузиастов))

Alex
14.12.2017
12:26:06
господа подскажите как мотивироваться кодить? хочу что-нибудь закодить такое интересное, но хорошо получается только думать о том как я буду кодить. А как только приходит время когда у меня вроде бы есть время покодить, так сразу уже кодить не хочется

Dmitriy
14.12.2017
12:27:54
Это или в кайф, или нет. Пропробуй игрульку скодить для себя, мне помогло снова воспылать любовью к процессу.)

The
14.12.2017
12:30:03

Жабра
14.12.2017
12:31:31

Kirill
14.12.2017
12:32:32

Жабра
14.12.2017
12:32:47
Тоже верно.

Kirill
14.12.2017
12:33:20
Тут главное не тусоваться, а реально кодить с ними)

Руслан
14.12.2017
12:34:46

The
14.12.2017
12:36:21
Ребята, в котлин можно в файле написать функцию без класса да. можно внутри класса методы создавать.
В чем преимущества функций без классов? к ним можно обращаться без создания объекта, только в этом?

Google

Gleb
14.12.2017
12:37:15

The
14.12.2017
12:37:32

Gleb
14.12.2017
12:38:16
кроме того, где еще экстеншн-функции писать?

Igor
14.12.2017
12:39:09

Gleb
14.12.2017
12:39:37

Alex
14.12.2017
12:51:50

Igor
14.12.2017
13:02:37
Немного мешает, что toplevel функции конфликтуют, если находиться в одном каталоге, лежа в разных файлах
(при этом формально они лежат внутри классов FilenameKt)

Руслан
14.12.2017
13:06:12

Vitalii
14.12.2017
13:09:45

Alexander
14.12.2017
14:50:49
Привет, а кто-нибудь знает можно ли создать анониный класс от другого иннер класса, т.е. аналог в джаве
obj.new Inner() {}

Quantum Harmonizer
14.12.2017
14:52:22
Хм. Может, object : obj.Inner() { ... }?

Alexander
14.12.2017
14:53:17
так не работает
я пробывал

Quantum Harmonizer
14.12.2017
14:54:26
тогда сомневаюсь, что так можно

Alexander
14.12.2017
15:19:22

Alexey
14.12.2017
15:38:17
Ребята, есть мысли как можно лучше написать?
https://pastebin.com/Zkdfy3bS

James Tiberius Kirk ?
14.12.2017
15:40:47

Руслан
14.12.2017
15:41:28
Мапа не всегда подходит

Quantum Harmonizer
14.12.2017
15:41:29

Google

Quantum Harmonizer
14.12.2017
15:41:42
и if-as-expression

Alexander
14.12.2017
15:43:32
out.add(Pair(i, picked[index] == i))

Igor
14.12.2017
15:44:15
Наверное можно через zip сделать

Alexey
14.12.2017
15:44:30
return win.mapIndexed { index, i -> Pair(i, picked[index] == i) }

Igor
14.12.2017
15:47:58
win.zip(picked, { i,t -> i to (i==t)})
(пишу по памяти с телефона)

Quantum Harmonizer
14.12.2017
15:48:32
WinZip ?

? animufag ?
14.12.2017
15:50:19
лол

Alexey
14.12.2017
15:53:08
С моей стороны интересно почему есть подозрение если неизвестно как используется?

? animufag ?
14.12.2017
15:59:20
если ты так собираешься хранить данные, то пары — фигня, от них так или иначе нужно отказываться и давать нормальные имена
если это оптимизация какой-нибудь функции через кеширование то почему недостаточно просто массива булеанов

Vadim
14.12.2017
16:17:26
Возможно ведь преобразовать во что то более компактное
Math.sqrt(Math.pow(a.toDouble(), 2.0) + Math.pow(b.toDouble(), 2.0))
с помощью extensions?

? animufag ?
14.12.2017
16:21:08
в идеале наверное сделать типы vec2, vec3 и для них определить length

Vadim
14.12.2017
16:35:04
что то явно упускаю
написал метод
private fun Math.calculateTheDistance(touchX: Float, touchY: Float, centerX: Float, centerY: Float): Float? {
val legA = touchX - (centerX)
val legB = touchY - (centerY)
val distancePressing = sqrt(pow(legA.toDouble(), 2.0) + pow(legB.toDouble(), 2.0))
return distancePressing.toFloat()
}
вызвать пытаюсь через имя класса в котором создал данный метод, но чёт не выходит

Vitalii
14.12.2017
16:36:58
Я конечно не на котлине пишу, но попробуй сделать метод не private, а public
Ну и если нужно, то ещё static добавь

? animufag ?
14.12.2017
16:39:52
в такой постановке делай просто топлевел функцию
без Math.
но всё таки даже для банального примера гораздо приятнее будет создать какой-нибудь
data class Point(val x: Double, val y: Double) {
val length: Double
get() = Math.sqrt(x*x + y*y)
fun distanceTo(other: Point) = (this - other).abs.length
}
ну переопределить все операторы, назвать vec2 с алиасом поинт мб

Google

Vadim
14.12.2017
17:19:19

Artur
15.12.2017
09:20:38
привет, какой профит есть от такой конструкции?
val lazyValue: String by lazy {
println("computed!")
"Hello"
}
функция println вызовется один раз

DarkMentat
15.12.2017
09:21:44
Ну так да, один раз при первом обращении к полю

Vitalii
15.12.2017
09:24:06

Admin
ERROR: S client not available

Boris
15.12.2017
10:40:01
ребят, подскажите, чот туплю, а есть ли такая конструкция в стдлибе типа: booleanExpression.ifTrueOrNull { someBlockWhichRunsWhenBooleanExpresisonIsTrue } ?: doItIfFalse?
т.е. понятно, что её можно написать, но чот периодически встречаю ситуации, когда такая штука нужна, иначе приходится писать типа val result = if(condition) expression else null вместо val result = condition.ifTrue { expression }
есть такая штука takeIf {} хорошая и очень удобная, но в дургих ситуациях, это вот вроде того, только с другой стороны

Alexander
15.12.2017
10:44:06
вроде как ещё не добавили, хотя народ очень просит. Можешь написать свою экстеншен функцию у класса Boolean (ну или погугли, её уже много кто написал)

Boris
15.12.2017
10:51:07
да я написал сам, пока переписывал на неё выражения, заменил их на родные конструкции ?
оказалось, что оно не так-то и нужно, если немного по-другому подойти :-)

Саша Батанова
15.12.2017
13:18:57

Валерий
15.12.2017
13:19:35
object: OnPaymentListener() { }

Саша Батанова
15.12.2017
13:22:15

Pavlo
15.12.2017
13:25:14

Anton
15.12.2017
13:25:16
анонинмые через обджект

Alexander
15.12.2017
13:41:09
Добрый день.
А есть кто-нибудь тут, кто использует Котлин как основной язык для своего тест-фреймворка для тестирования веба?

Google

Руслан
15.12.2017
13:51:58
Да, пишем тесты на котлине

Dibro
15.12.2017
14:29:26
подскажите, это же эквивалентно?
@get:Foo
val bar: Any
val bar: Any
@Foo get

Simon
15.12.2017
14:34:12
Да

Dibro
15.12.2017
14:35:19
спасибо

Igor
15.12.2017
15:01:18
Хочу немножко порадоваться коррутинам ?
Надо было написать менеджер websocket соединений. При этом:
- посылка сообщения в сокет и подписка/отписка на обновления может прийти с любого потока
- вебсокеты сами асинхронные и колбеки могут дергаться в любом потоке/порядке
- соединения должны кешироваться и переиспользоваться
Как это написать, чтобы стабильно работало и не сойти с ума ? (от синхронизации всего этого)?
Ответ: Kotlin Actor’s + sealed class для списка команд + when (для разбора команд)
https://i.gyazo.com/47cd260b30c285182249b8a5ac8aa099.png

Руслан
15.12.2017
15:55:36
Мы тоже корутины использовали для вебскотетов. Сейчас вроде парни переписывают на Rx, но почему я так и не понял. Пояснишь @hleb_albau?

Quantum Harmonizer
15.12.2017
15:57:21
Переписывал недавно спринговские WebSocket на ktor'овские. Полёт отличный.

Kirill
15.12.2017
15:58:21
Ktor уже с Application?

Quantum Harmonizer
15.12.2017
15:58:38

Kirill
15.12.2017
16:00:04
Я недавно смотрел туториалы по нему. Там два способа запускать приложение. Писать main самому или через класс Application.
Верно?
И в новых туториалах используется второй вариант. А в старых первый.

Hleb
15.12.2017
16:00:29

Руслан
15.12.2017
16:01:01
|| - параллельную значит?

Hleb
15.12.2017
16:01:06
Да

Руслан
15.12.2017
16:01:23
а почему не launch(): Job?

Quantum Harmonizer
15.12.2017
16:01:29

Hleb
15.12.2017
16:02:21
Там немного сложнее логика