
Alexey
19.03.2018
14:35:07

Quantum Harmonizer
19.03.2018
14:35:49

Mikhail
19.03.2018
14:37:34

Mikhail
19.03.2018
14:39:11
можно наверно, но сравнивать тогда их неудобно будет, хотя и сейчас оно плохо читаемо

Google

Mikhail
19.03.2018
14:39:42
нужно график жаваскриптом рисовать, с выбором, что рисовать
никто не хочет заняться?)

Ivan
19.03.2018
14:54:39
если приходит строка из сети, то тут упс, всегда будет выделение

Жабра
19.03.2018
15:07:39
https://m.habrahabr.ru/company/redmadrobot/blog/351516/

Руслан
19.03.2018
15:08:11
Выжимка из доклада Станислава Ерохина с митапа @kug_spb опубликована на хабре https://habrahabr.ru/company/redmadrobot/blog/351516/

Тимур
19.03.2018
17:43:17

Oleg
19.03.2018
17:47:43
Нашел)

Mikhail
19.03.2018
17:48:29

Тимур
19.03.2018
17:49:16
стриминг, но в объект уже руками запихивать
хотя конечно тогда это не совсем уже полноценная сериализация
теперь надо протобуф vs json )

Жабра
19.03.2018
20:40:19
Не совсем понятна концепция инлайн классов в 1.3. Может кто-нибудь объяснить?

Sergey
19.03.2018
20:42:27
ну, они инлайнятся))

Google

Жабра
19.03.2018
20:45:06
Спс.)))

Bogdan
19.03.2018
21:23:22
Может я слишком пного хочу. Есть функция принимающая лямду с ресивером, в этой лямбде кроме прочих операций я могу вызвать либо ф1 либо ф2, либо ниукакую. Есть ли такая странная возможность

Kirill
19.03.2018
21:25:20

Bogdan
19.03.2018
21:25:58
очень странный кейс, скорей я просто играюсь

Kirill
19.03.2018
21:26:59

Костя
19.03.2018
21:28:04
Метод, который из условия какого-то вызывает ф1 или ф2 функции, которые передаешь в метод ?
Примерно такое ?

Bogdan
19.03.2018
21:30:13

Тимур
19.03.2018
21:54:27

Ivan
19.03.2018
22:01:57

Тимур
19.03.2018
22:03:52
:)
интересно, что они пишут что ограничение на одно поле "пока"
я вот гадаю, как же его можно потом обойти, ну кроме того, что написать свою JVM

Ivan
19.03.2018
22:07:37

Тимур
19.03.2018
22:13:51

Никита
19.03.2018
22:54:57
А кто то пилил бэк для почтовых клиентов?
Если взять JavaMailApi + ktor, норм будет если в бэкенд ниразу ногой не ходил, а говнокодил под ведро? Или есть что то готовое норм, что можно будет легко переделать?

Ivan
19.03.2018
23:35:08

Тимур
19.03.2018
23:45:19
не, джит об этом даже не догадается, потому что этот класс не переживет фазу компиляции и до jvm не доберется
везде где этот класс используется, компилятор засунет его содержимое по принципу "мы с Тамарой ходим парой"
Например, было
class Vec2(val x: Float, val y: Float)
class Foo(val position: Vec2)
А станет
Foo(val position_x: Float, val position_y: Float)
но это всего лишь мои догадки, как оно на самом деле, посмотрим когда выйдет

Ivan
19.03.2018
23:51:18
А, ну я думал оно так и сейчас есть
С коллекциями самая засада, хз как заинлайнить ключ в мапке, например

Google

Тимур
19.03.2018
23:55:29
никак, только свои коллекции делать специально для этого
вообще если идти в native, то конечно хочется и value types, и generics полноценные как у людей
а тут эта java архаичная со своими ограничениями, с которой надо совместимость поддерживать
вот не осилил Sun в восемьсот двенадцатом году, а до сих пор аукается

Boris
20.03.2018
02:10:41
Очень хороший пример инлайн-класса это Color огромное количество методов которые с ним можно делать, получать ргб компоненты, инвертировать, складывать, вычитать и ещё куча всего. По факту же это обёртка для инта (обычно). Т.е. можно просто было бы заменить использование цвета на инт+экстеншены для экономии объекта на каждый инсианс, но некошерно засорять скоуп инта. И тут выходит инлайн класс такой красивый, который это может сделать в отдельном скоупе

Жабра
20.03.2018
03:27:36

Alexey
20.03.2018
03:34:07
Котланы, есть вот такой пример
fun foo(a: Int, b: Int) = ???
val a: Int?
val b: Int?
val c = a?.let { a ->
b?.let { foo(a, it)) }
}
Есть ли более простой, красивый или идеоматичный способ сделать это?

Vladimir
20.03.2018
03:36:45

Alexey
20.03.2018
03:37:39
ох как больно
кароч null safety подвезли, а удобные комбинаторы забыли

Vladimir
20.03.2018
03:40:22

Alexey
20.03.2018
03:40:51
Вложенные let хоть сколько то декларативно выглядят, с if совсем чот печать
Еще и туплы задепрекейтили, так бы можно было екстеншинов написать на подобии
(a, b, c, d).mapN(foo)

Victor
20.03.2018
06:21:38

Alexey
20.03.2018
06:22:15

Victor
20.03.2018
06:22:40
Ну ты же чото не на скале :)
Да не ссы, тащи

Alexey
20.03.2018
06:22:56

Victor
20.03.2018
06:23:05
А, ну тогда на скале
¯\_(ツ)_/¯

Alexey
20.03.2018
06:23:48
Я пытаюсь плюсы коклина почувствовать, не зря же люди его писали

Google

Grigory
20.03.2018
06:24:49
@eld0727 наш шпион из скала чатика

Alexey
20.03.2018
06:25:15
Я же уже обозначил свою роль тут - диванный эксперт

Igor
20.03.2018
06:31:38

Alexey
20.03.2018
06:35:55

Тимур
20.03.2018
07:44:17
через if норм, куда уж идиоматичней?

Admin
ERROR: S client not available

Sergey
20.03.2018
08:40:58

Alexey
20.03.2018
08:42:16

Sergey
20.03.2018
08:52:54
Куда глядеть?
так сходу не сброшу ссылок
https://habrahabr.ru/company/redmadrobot/blog/351516/ вот тут к примеру Метаинформация для DFA и смарткастов
это и сейчас используется в stdlib, но самому вроде нельзя юзать контракты
public inline fun <T:Any> requireNotNull(value: T?): T {
contract {
returns() implies (value != null)
}
return requireNotNull(value) { "Required value was null." }
}
вот например ты делаешь
val a: String? = "trololo"
requireNotNull(a)
a.length // без контракта тебе нужно было б делать a!!.length или проверять на null еще раз

Alexey
20.03.2018
08:55:57
Да уже прочитал, спасибо
Ну вобщем то не легче от этого :)

Sergey
20.03.2018
08:57:17
ну ты и щас можешь сделать свою notNull функцию, но внутри тела нужно будет делать !! для каждой переменной. а так с контрактом компилятор сам догадается что там не нулы

Alexey
20.03.2018
09:02:47
Ну я скорее написал бы всё таки ряд утильных функций
fun <A, B, C> apply(a: A?, b: B?, f: (A, B) -> C): C? = ???

Sergey
20.03.2018
09:09:42
ну хз, let юзать всегда как замену для if тоже не очень хорошо

Alexey
20.03.2018
09:10:36
Прост let убирает ненужную ветку с return, и я могу A? воспринимать как эндофунктор впринципе, а ?.let как map

Sergey
20.03.2018
09:11:37
не уверен что это даст плюс к читаемости кода

Mikhail
20.03.2018
09:20:46

Google

Mikhail
20.03.2018
09:21:20
ну и можно вместо тупла сделать просто функцию от двух аргументов

Alexey
20.03.2018
09:22:04

Mikhail
20.03.2018
09:26:01

Тимур
20.03.2018
09:34:34
не только сишные
на каком языке ни писать, все равно все в итоге сведется к перекладыванию байтиков с места на место
и оно будет либо по ссылке, либо значению

Alexey
20.03.2018
09:36:03
Само разделение передача по ссылке и по значению, уже не правильно
Потому что всегда передаётся значение примитивов

Тимур
20.03.2018
09:41:21
ну по факту такое разделение уже есть в куче языков
надо срочно написать их создателям, что это неправильно, пусть переделывают

Alexey
20.03.2018
09:59:33
Какое разделение? Есть прувы где то, что создатели языка вот так это всё называют?

Bogdan
20.03.2018
10:02:02

Тимур
20.03.2018
10:03:51
Какое разделение? Есть прувы где то, что создатели языка вот так это всё называют?
ну называют по разному
иногда ссылку называют "указатель", но суть дела от этого не меняется
на уровне байтиков выбора ровно два: либо пихать в стек адрес объекта, либо целиком тушкой
либо в поле хранить адрес участка памяти, где хранится объект, либо сам объект тушкой
а в какие языковые абстракции это сверху обернуто и как их назвать - это уже дело вкуса

Alexey
20.03.2018
10:05:36
Кароч ладно, у меня более жизненный вопрос есть разница межу and и &&

Andrew
20.03.2018
10:06:07
https://kotlinlang.org/docs/reference/basic-types.html#operations

Bogdan
20.03.2018
10:06:19
а не есть
and это &
но жто не точно