@kotlin_lang

Страница 457 из 982
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
Это или в кайф, или нет. Пропробуй игрульку скодить для себя, мне помогло снова воспылать любовью к процессу.)

Kirill
14.12.2017
12:32:32
индивидуально тяжело. толпой надо.
+1 Сформируй круг общения из тех, кто много кодит. По работе, по учёбе, по фану. И втянешься.

Жабра
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:38:16
кроме того, где еще экстеншн-функции писать?

Igor
14.12.2017
12:39:09
кроме того, где еще экстеншн-функции писать?
Можно даже в object, но IDEA такие не видит и надо их явном импорить (так что толку около 0)

Alex
14.12.2017
12:51:50
Ребята, в котлин можно в файле написать функцию без класса да. можно внутри класса методы создавать. В чем преимущества функций без классов? к ним можно обращаться без создания объекта, только в этом?
ну а представь что ты на C писал и там ф-ции без класса писал. А затем пришёл в Kotlin и пишешь тут тоже ф-ции без класса. Удобно. Или из математики пришёл. Или из Pascal.

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

Vitalii
14.12.2017
13:09:45
Ребята, в котлин можно в файле написать функцию без класса да. можно внутри класса методы создавать. В чем преимущества функций без классов? к ним можно обращаться без создания объекта, только в этом?
Утилиты, вместо создания public abstract final UtilityClass { private UtilityClass() {} // тут уже статические методы } можно просто писать в файл функции. Либо любят добавлять несколько data-классов в один файл.

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
тогда сомневаюсь, что так можно

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

https://pastebin.com/Zkdfy3bS

James Tiberius Kirk ?
14.12.2017
15:40:47
https://pastebin.com/Zkdfy3bS
Ну во-первых отдавать мапу

Руслан
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
Я конечно не на котлине пишу, но попробуй сделать метод не private, а public
да это было во первых) что нужно public) по поводу static лучше не использовать, они уже не быстрее !) ну а во вторых тут пришлось бы делать расширенние с companion object

но всё таки даже для банального примера гораздо приятнее будет создать какой-нибудь 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 }
спасибо, но я так прикинул что всё таки затея так себе) во первых класс Math довольно таки generic а я больше как кроме этого метода его функции использовать не буду, так что извините)

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
привет, какой профит есть от такой конструкции? val lazyValue: String by lazy { println("computed!") "Hello" }
Дёрнуть onFieldInitialized() или onFieldAccessed() можно какой-нибудь, если это нужная информация.

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
object: OnPaymentListener() { }
аа, огромное спасибо, но обьясни пожалуйста почему и как? или ссыль)

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
Ktor уже с Application?
Это что значит?

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

Верно?

И в новых туториалах используется второй вариант. А в старых первый.

Hleb
15.12.2017
16:00:29
Мы тоже корутины использовали для вебскотетов. Сейчас вроде парни переписывают на Rx, но почему я так и не понял. Пояснишь @hleb_albau?
Мы в сокетах не трогали корутины, просто в новом проекте сделали с помощью rx || загрузку и обработку сущностей

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

Hleb
15.12.2017
16:01:06
Да

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

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

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