
Alexey
04.07.2018
18:23:15
ребят, а кто знает * - spread оператор как себя ведет если список пустой?

dimiii
04.07.2018
18:23:41
Эй там, в жетбрейнс, снимите уже серию роликов для миллениалов, страдают же

Anton
04.07.2018
18:23:51
на степике же есть
че то

Google

Alexey
04.07.2018
18:23:58

dimiii
04.07.2018
18:24:49
ребята у меня вопрос как начинающиму, который изучает Kotlin,
есть видео курсы только по Java нормальные, по Kotlin нормальных курсов нет step by step,
поэтому как лучше изучать материал?
смотрю это сейчас на udemy - https://www.udemy.com/java-the-complete-java-developer-course/learn/v4/
- Просмотреть вначале видео уроки по Java, а потом начать изучать Kotlin? Потому что по Kotlin нормальных курсов нет,
тогда легче уже будет разобраться с Kotlin.
Сейчас изучая Kotlin остановился на коллекциях, понял что надо еще изучить много базоых вещей.
----
может кто что посоветует, кто уже проходил этот путь обучения, можно конечно просто документацию прочесть,
но начинающему мне кажется по видео курсам будет проще, хоть и медленней.
https://stepik.org/course/2852/

Sander
04.07.2018
18:25:22
@dimiiim о спасибо

dimiii
04.07.2018
18:25:32

Alexey
04.07.2018
18:33:24
Ребята, вопрос возможно не совсем по теме, но не очень понимаю куда копать - открываю intellij, хочу создать новый android проект. На финальной стадии где мне дают настроить new empty activity жму next, окно ide трясется (будто сигналит что что-то не так), но никаких ошибок не рисует.
Как понять что ему не нравится? (osx)

Mayor
04.07.2018
18:34:57
osx или macos?

Alexey
04.07.2018
18:36:21
macos, да

Alexander
04.07.2018
18:43:21

Sander
04.07.2018
18:48:13
зачем? Linux, я сам люблю эту оську очень сильно, но предпочита работать за маком.

dimiii
04.07.2018
18:49:36
f(*arrayOf())
Отличное наблюдение !!!!!
Плохо себя ведет. Т/е сообщает об ошибке, но не о той, о которой следовало бы. Хотя трудности начинаются уже с arrayOf() - для пустого массива все равно нужно специфицировать тип, тогда можно считать, что, например, для arrayOf<String>() * должен вернуть пустой кортеж, что позволяет применять функции типа () -> T. Ну или ругнуться подходящим образом, если непозволительно. Вместо этого, невнятная ошибка, что - то вроде:
too many arguments for public final fun test(): Unit defined in Line_42
(), кстати, отождествляется с Unit во многих взрослых языках и является логической истиной https://en.wikipedia.org/wiki/Curry%E2%80%93Howard_correspondence#General_formulation
В Котлине это не так, что тоже странно

Oleg
04.07.2018
18:49:58
в хомяке должны лежать

Alexey
04.07.2018
18:50:44
Ага, смог откопать логи

Google

Alexey
04.07.2018
18:50:57
null
java.lang.NullPointerException
at com.android.tools.idea.sdk.wizard.InstallSelectedPackagesStep.onEntering(InstallSelectedPackagesStep.java:143)
at com.android.tools.idea.wizard.model.ModelWizard.goForward(ModelWizard.java:303)
Ну и далее по списку

Oleg
04.07.2018
18:52:19
хм
щас будет дурацкий совет
а почему бы не пользоваться AndroidStudio?

Alexey
04.07.2018
18:53:03
Отличное наблюдение !!!!!
Плохо себя ведет. Т/е сообщает об ошибке, но не о той, о которой следовало бы. Хотя трудности начинаются уже с arrayOf() - для пустого массива все равно нужно специфицировать тип, тогда можно считать, что, например, для arrayOf<String>() * должен вернуть пустой кортеж, что позволяет применять функции типа () -> T. Ну или ругнуться подходящим образом, если непозволительно. Вместо этого, невнятная ошибка, что - то вроде:
too many arguments for public final fun test(): Unit defined in Line_42
(), кстати, отождествляется с Unit во многих взрослых языках и является логической истиной https://en.wikipedia.org/wiki/Curry%E2%80%93Howard_correspondence#General_formulation
В Котлине это не так, что тоже странно
а если тип не специфицировать то такая ошибка будет когда передаешь пустой массив в варарг?


dimiii
04.07.2018
18:53:42
Насчет, отношения () с Unit, возможно я сделал поверхностные выводы по синтаксису
>>> typealias A = () -> Unit
>>> typealias B = Unit -> Unit
...
error: unexpected tokens (use ';' to separate expressions on the same line)
typealias B = Unit -> Unit
^


Quantum Harmonizer
04.07.2018
20:11:45
Отличное наблюдение !!!!!
Плохо себя ведет. Т/е сообщает об ошибке, но не о той, о которой следовало бы. Хотя трудности начинаются уже с arrayOf() - для пустого массива все равно нужно специфицировать тип, тогда можно считать, что, например, для arrayOf<String>() * должен вернуть пустой кортеж, что позволяет применять функции типа () -> T. Ну или ругнуться подходящим образом, если непозволительно. Вместо этого, невнятная ошибка, что - то вроде:
too many arguments for public final fun test(): Unit defined in Line_42
(), кстати, отождествляется с Unit во многих взрослых языках и является логической истиной https://en.wikipedia.org/wiki/Curry%E2%80%93Howard_correspondence#General_formulation
В Котлине это не так, что тоже странно
В котлине нет кортежей + нет компайл-тайм-гарантии, что arrayOf вернёт именно пустой массив, так что нужен только варарг-метод.
Для меня, как джависта, всё логично :)
Хмм, stackless exception?
https://twitter.com/JakeWharton/status/1014598257044086789?ref_src=twcamp%5Ecopy%7Ctwsrc%5Eandroid%7Ctwgr%5Ecopy%7Ctwcon%5E7090%7Ctwterm%5E3


dimiii
04.07.2018
20:16:29
Но кстати, не то чтобы совсем нет кортежей - вот здесь например:
>>> typealias A = () -> Unit

Alexey
04.07.2018
20:24:42

Quantum Harmonizer
04.07.2018
20:38:35

dimiii
04.07.2018
20:38:45

Kirill
04.07.2018
20:40:41
() ?
Но это же кусок функционального типа...

dimiii
04.07.2018
20:41:11
Ну ок, fun some() {}

Quantum Harmonizer
04.07.2018
20:41:33
() ?
Это пустой список параметров

dimiii
04.07.2018
20:46:37
Лучшая джава

Google

Alexandr
04.07.2018
21:47:59

Quantum Harmonizer
04.07.2018
21:48:45
Можно, через имя класса, не через экземпляры

Alexandr
04.07.2018
21:49:15

Quantum Harmonizer
04.07.2018
21:49:39

Alexandr
04.07.2018
21:50:08

Quantum Harmonizer
04.07.2018
21:50:39

Alexandr
04.07.2018
21:51:47
К сожалению, да
Так а что в этом плохого? Не пойму почему нельзя то?) я сконвертил джава код в котлин... а он это даже никак не обработал..

dimiii
04.07.2018
22:02:29

Alexandr
04.07.2018
22:04:27
Джошуа Блох расписал в своей книге
Но это все равно странно.. т.к. разработчики заявили о совместимости в обе стороны. А тут даже конвертор не может это правильно из джавы в котлин транслировать..

Alexey
04.07.2018
22:32:24

Vladislav
04.07.2018
22:46:49

Egor
04.07.2018
23:34:59

Quantum Harmonizer
05.07.2018
08:29:59

dimiii
05.07.2018
10:07:49
Это пустой список параметров
Я понимаю, что на грани троллинга, но не могу сдержаться. Какой тип домена у таких функций?
fun kotlinIsBetterJava() {}
fun <T> kotlinIsBetterJava1(arg1: T) {}
fun <S, T> kotlinIsBetterJava2(arg1: T, arg2: S) {}
Почему так сделано? Почему не сделано нормально?

Bogdan
05.07.2018
10:09:14

Quantum Harmonizer
05.07.2018
10:09:15

Boris
05.07.2018
10:09:50

dimiii
05.07.2018
10:09:51
f : X -> Y, домен - X, кодомен - Y.

Quantum Harmonizer
05.07.2018
10:10:46

Google

Boris
05.07.2018
10:11:25

dimiii
05.07.2018
10:11:47

Bogdan
05.07.2018
10:12:04
Вселеная тут не причем

dimiii
05.07.2018
10:12:37
А теперь применительно к котлину
fun square(x: Int) = x * x - все же согласны, что это функция на множестве целых чисел, с отображением в множество целых чисел ( с разумными ограничениями)

Bogdan
05.07.2018
10:12:56

Boris
05.07.2018
10:13:27

Kirill
05.07.2018
10:13:37

dimiii
05.07.2018
10:14:06

Quantum Harmonizer
05.07.2018
10:14:14

dimiii
05.07.2018
10:15:13
(Unit)
(Object, Object)
:)
И вроде есть понятие кортежей, и вот их нет.
(Unit) - кстати правильно будет () - некий-пустой-список-аргументов (махание руками)
ладно, умолкаю

Kirill
05.07.2018
10:16:19

dimiii
05.07.2018
10:16:41

Kirill
05.07.2018
10:17:28
И знаешь почему?:)

dimiii
05.07.2018
10:18:28

Kirill
05.07.2018
10:19:15

Google

Kirill
05.07.2018
10:23:16
Хотите, чтобы было как на Украине^W^W в скале?? :)
https://github.com/Kotlin/KEEP/blob/functionn-jvm/proposals/functional-types-with-big-arity-on-jvm.md

Igor
05.07.2018
10:32:29
А вроде бы Бреслав думает над их добавление в котлин (типа дата-саентистам нужно)

Mi
05.07.2018
10:32:56

Igor
05.07.2018
10:33:15
Переосмыслив видимо

Boris
05.07.2018
10:34:05
Были, да
И порой они и правда бывают полезными

dimiii
05.07.2018
10:39:22
По-чесноку, data class и есть те же кортежи (разве что пустого data class не создать). https://en.wikipedia.org/wiki/Product_type