@kotlin_lang

Страница 334 из 982
Sergey
20.09.2017
10:14:59
переписывал целый модуль с пхп на котлин, говорю по опыту

gxwin
20.09.2017
10:15:24
Ну хз [x + 1 for x in myList]

Sergey
20.09.2017
10:15:40
myList.map { it +1 }

gxwin
20.09.2017
10:18:00
не знал что в котлин радости ФП завезли. Но в целом кода все равно меньше. Чаще можно встретить одну функцию с параметризированными данными, а в джаве это будет как минимум два класса уже (один с этим методом, другой набор геттеров и сеттеров).

Google
Igor
20.09.2017
10:18:22
myList.map { it +1 }
myList.map(1::plus) ?

gxwin
20.09.2017
10:18:25
как в котлине будет обработка строк в файле

это будет очердной поток потока или же как в питоне?

Igor
20.09.2017
10:19:42
там, кажется, ошибка будет)
Зависит от версии Kotlin

Quantum Harmonizer
20.09.2017
10:20:03
listOf(1, 2, 3).map(1::plus)

Back-end (JVM) Internal error: Couldn't transform method node: <init> (Ljavax/script/Bindings;)V: ALOAD 0 ALOAD 1 INVOKESPECIAL org/jetbrains/kotlin/script/jsr223/KotlinStandardJsr223ScriptTemplate.<init> (Ljavax/script/Bindings;)V ALOAD 0 L0 LINENUMBER 1 L0 ALOAD 0 IC... [RESULT TOO LONG (5599)]

DarkMentat
20.09.2017
10:20:18
кстати про размер кода, ГОшники часто хвастаються скоростью разработки, но кода там дофига, причем адского бойлерплейта хуже джавы

Igor
20.09.2017
10:20:39
Quantum Harmonizer
20.09.2017
10:20:44
это будет очердной поток потока или же как в питоне?
как с Питоне? Написать можно как угодно.

Sergey
20.09.2017
10:21:44
Google
Igor
20.09.2017
10:22:17
Попробуй JS

gxwin
20.09.2017
10:22:22
не, как открыть файл в 50гигов и построчно прочитать

Quantum Harmonizer
20.09.2017
10:22:39
Попробуй JS
работает)

там нормальное ленивое чтение

gxwin
20.09.2017
10:24:48
а как файл открывать? Как в джаве?

Евгений
20.09.2017
10:25:35
Добрый день! Господа, кто-нибудь сталкивался с проблемой в Realm, когда вылазит ошибка %ObjectName% is not part of the schema for this Realm ? Никак не могу разобраться.

Sergey
20.09.2017
10:25:49
gxwin
20.09.2017
10:26:15
нёв ПотокРидер(нёв ПотокСБуферами(нёв ПотокПрост))

Sergey
20.09.2017
10:26:27
а под копотом будет BufferedReader(InputStreamReader(FileInputStream(this), charset)).forEachLine(action)

gxwin
20.09.2017
10:26:33
вооо да

Sergey
20.09.2017
10:26:34
это из стандартной либы

Quantum Harmonizer
20.09.2017
10:26:36
gxwin
20.09.2017
10:27:30
форейч будет по строкам читать - или всю коллекцию из 50гб файла?

Quantum Harmonizer
20.09.2017
10:27:57
там нормальное ленивое чтение

Sergey
20.09.2017
10:28:03
Buffered же

Quantum Harmonizer
20.09.2017
10:28:32


Sergey
20.09.2017
10:29:34
в java 8 же можно еще Files.lines(Paths.get(fileName))

Google
Sergey
20.09.2017
10:29:34
и вернут тебе стрим

gxwin
20.09.2017
10:39:28
File("...").forEachLine { ... } Ну вот та же стезя динам языков выходит, без документации и не разобраться как работает (хотя можно прокликать и сорцы почитать, лол). То что сделали фасад - круто, и даже короче чем в питоне, но это тупо фасад, а не нативный интерфейс работы. То есть к чему я, в том же питоне все библиотеки будут стремиться к простому интерфейсу и за счет динамичности достигать это будет еще проще. То есть там, в целом, API не фасады (может быть и фасады где-то глубоко, но изначально интерфейс дали как-есть-удобный)

Фасад это всегда магия, а магия это стезя динам языков

Quantum Harmonizer
20.09.2017
10:40:11
Фасад это всегда магия, а магия это стезя динам языков
Это ни разу не магия, у всех этих функций явно заданы типы.

Sergey
20.09.2017
10:40:20
и эт не фасад

это файл и экстеншен к нему

gxwin
20.09.2017
10:40:33
В динам языках тоже все типы и явно заданны

просто необязательны

Quantum Harmonizer
20.09.2017
10:43:21
если у выражения нет compile-time типа, о каких явно заданных типах речь?

gxwin
20.09.2017
10:43:53
Я конечно звучу не убедительно, просто надо на динам языках (нормальных, не js) пописать и тогда станет понятно, что за определенную долю усилий количества полезного действия в динам языке выходит больше

Quantum Harmonizer
20.09.2017
10:44:33
Какие есть нормальные динамические языки? Python, Clojure, Erlang?

gxwin
20.09.2017
10:44:47
если у выражения нет compile-time типа, о каких явно заданных типах речь?
в рантайме есть, зачем тебе компайл-тип у динам языка, если он не компилируется)

Какие есть нормальные динамические языки? Python, Clojure, Erlang?
Это уже выберет каждый для себя сам, тема для холивара. Я бы сказал - любой, кроме жс

Quantum Harmonizer
20.09.2017
10:46:14
я бы сказал, что JS лучше, чем PHP, особенно последние версии

gxwin
20.09.2017
10:47:28
я же говорю, каждому тут свое. Я тут чисто про противостояние статик vs динамик языки

Pavel
20.09.2017
10:48:32
Парни, что-нить подобное есть в котлине? Не смог загуглить http://simplecat.tk/shots/shot-170920-134759-688844.png

Типа сложная inline-инициализация

Quantum Harmonizer
20.09.2017
10:49:37
у выражения же тип () -> DecimalFormat

Pavel
20.09.2017
10:50:41
Я присвоить хочу не колбэк, а результат этого колбэка. Если так можно выразиться.

Igor
20.09.2017
10:50:43
Google
DarkMentat
20.09.2017
10:52:04
как-то так идиоматично

Pavel
20.09.2017
10:54:12
И init { } чистый.

Quantum Harmonizer
20.09.2017
10:56:50
Пофиксил
оперативно! :)

gxwin
20.09.2017
10:58:35
Это ни разу не магия, у всех этих функций явно заданы типы.
Про магию, я тут не про типы, а про то что функция в стиле magicSomething() То есть включает в себе какую-то магию, которую не раскрыть без документации (ну откуда тут догадаться что она на себя берет цикл и выборку, и главное зачем почему бы не foreach(line : File.nextLine()) {}

gxwin
20.09.2017
11:00:25
ну согласись что мой код явно говорит сам за себя, чем стиль File.magicCode() в один магически метод

Quantum Harmonizer
20.09.2017
11:00:50
gxwin
20.09.2017
11:01:03
Это печально)

Quantum Harmonizer
20.09.2017
11:01:36
для меня магия — это динамичность, рефлексия, непредсказуемость

gxwin
20.09.2017
11:04:16
File(...).forEachLine() . for(String line : File.nextLine()) Я думаю человек без знания доков спокойно поймет и прочитает второй код и поймет что идет чтение построчно, а вот первый вариант нарушение SRP

Первый вариант ближе к динам языкам

там как раз один метод может сделать туеву тучу действий, прочитать файл и параллельно спасти мир

Mi
20.09.2017
11:05:44
тут уже спор не в разнице динамических и статических языков

а в разнице процедурных/ооп и функциональной парадигм

Quantum Harmonizer
20.09.2017
11:06:21
File(...).forEachLine() . for(String line : File.nextLine()) Я думаю человек без знания доков спокойно поймет и прочитает второй код и поймет что идет чтение построчно, а вот первый вариант нарушение SRP
Почему вызвать переданную функцию на каждой строке — нарушение SRP? Что делает File#nextLine()? Мутирует состояние файла? Какого хрена?

Google
gxwin
20.09.2017
11:06:54
Когда я беру статик язык, я хочу чтобы код говорил сам за себя, если мне нужна магия в одну строку я возьму питон или жс.

Это имхо

Quantum Harmonizer
20.09.2017
11:07:23
Ты понятие магии так и не определил.

gxwin
20.09.2017
11:08:41
Почему вызвать переданную функцию на каждой строке — нарушение SRP? Что делает File#nextLine()? Мутирует состояние файла? Какого хрена?
Что значит мутирует, указатель смещает, классическая работа с файловым дескриптором

Quantum Harmonizer
20.09.2017
11:09:09
Где указатель хранится? В самом объекте File? Что он там делает? Это нарушение SRP.

Mi
20.09.2017
11:09:11
File(...).forEachLine({ line -> ... }) for(String line : File.nextLine()) { ... }

в чём разница?

Quantum Harmonizer
20.09.2017
11:09:33
в чём разница?
Там магия. Не видишь, что ли?)

А когда файл закончится, nextLine будет возвращать null? Чтобы считать файл заново, нужно сбросить состояние? Что за процедурщина?!

gxwin
20.09.2017
11:13:07
Ты понятие магии так и не определил.
Магия кода - это совокупность проблем при прочтение/написание кода, где явным образом нарушается как принцип SRP, так и другие принципы, которые препятствуют прямому восприятию кода без дополнительного изучение документации тех или иных API-решений в коде. Сойдет?

Где указатель хранится? В самом объекте File? Что он там делает? Это нарушение SRP.
А ты догадайся, где он может еще хранится когда мы работаем с файлом (точнее с файловым дискриптором)?

Quantum Harmonizer
20.09.2017
11:14:18
Нет. В вызове функции для каждой строки я не вижу нарушения SRP. Вижу это нарушение в хранении состояния чтения прямо в File. Вижу сломанную инкапсуляцию и неприкрытое изменяемое состояние. Вижу процедурщину.

gxwin
20.09.2017
11:14:39
Сама функция берет на себя роль цикла и выборки

я понимаю что это ФП стиль, но это нарушение принципа

Quantum Harmonizer
20.09.2017
11:15:00
Сама функция берет на себя роль цикла и выборки
ну окей, lineSequence().forEach { ... } — выборка отдельно, цикл отдельно.

gxwin
20.09.2017
11:16:33
в каком-то хитром месте, с применением магии
Лол, логично при создание дискриптора он имеет какое-то состояние, как ты начнешь читать файл с позиции 3454 байт?

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