
Даниил
22.06.2017
14:48:25
знаешь почему null - плохо, и почему это не касается unit?

Adam
22.06.2017
14:48:33
его семантика - ПУСТОТА.
потому что Null предком объектов является

Даниил
22.06.2017
14:50:23
null можно вернуть (не в котлине, так в джаве) из функции, в сигнатуре которой в качестве возвращаемого значения стоит какой-то класс
и потом этот null можно попытаться разыменовать
unit же - это не "пустая ссылка", просто единичное значение, его нельзя попытаться разыменовать, его нельзя вернуть вместо значения другого класса, это абсолютно безопасная штуковина с прозрачной семантикой

Google

Adam
22.06.2017
14:51:01
его можно вернуть в Kotlin и присвоить в переменную, вот я о чём

Даниил
22.06.2017
14:51:28
я тебе говорю почему от null в джаве бегут
небезопасно
unit - безопасно
а вот подтипы - как раз то что ненужно)

Adam
22.06.2017
14:52:21
да где безопасно, если полагаешься на вывод типа, не проверил сигнатуру в IDE - и получил вывод Unit в переменной

Quantum Harmonizer
22.06.2017
14:52:45

Adam
22.06.2017
14:53:15
Я говорю про то, что если функция возвращает Unit, присваивание должно быть недопустимо

Руслан
22.06.2017
14:53:18
какие серьезные вопросы обсуждаются
https://en.wikipedia.org/wiki/Unit_type

Adam
22.06.2017
14:55:50
я читал всё это

Руслан
22.06.2017
14:57:22
Как бы написано что как минимум один костыль из-за того что void в джаве. И для чего полезно присваивать Unit.

Igor
22.06.2017
14:57:55

Google

Даниил
22.06.2017
14:59:13
сейчас на котлине не пишу, но я понял о чём ты
на Rust например использую enum'ы (те же ADT), функции "внутри object" (потому что ad-hoc полиморфизм же, на одних топ-левел функциях в Rust далеко не уедешь), коллекции не персистентные, но это из-за специфики Rust (всё-таки прикол в том чтобы писать достаточно шустрый код с zero-cost абстракциями)

Adam
22.06.2017
15:02:34

Даниил
22.06.2017
15:02:45
сейчас напишу пример какой-нибудь

Adam
22.06.2017
15:04:57
Кстати, вопрос такой: если в java, kotlin, ожидаете на входе метода Double/Float, проверяете на +- Infinity (NaN) ?

Quantum Harmonizer
22.06.2017
15:07:14
Хм, часто ли люди вообще используют плавающие числа?

Adam
22.06.2017
15:07:54
ну если разрабатываешь небольшую игру на векторах, то нужны

Павел
22.06.2017
15:12:38

Даниил
22.06.2017
15:14:42
я сейчас часа на полтора пропаду, если что тогда в пол восьмого или восемь где-то вернусь и отвечу

Adam
22.06.2017
15:15:34
ок

Quantum Harmonizer
22.06.2017
15:17:23
println(answer(Question("Являются ли вложенные классы костылями?")))
42

Adam
22.06.2017
15:18:09
функция возвращает функцию, что-то не вижу необходимости присваивать Unit в переменную, или я неправильно понял?
обычный карринг, возвращает функцию, где тут подвох-то?

Quantum Harmonizer
22.06.2017
15:19:34

Adam
22.06.2017
15:20:18

Quantum Harmonizer
22.06.2017
15:20:31

Adam
22.06.2017
15:21:49
вообще отговорки вроде: копилятор умеет выводить только в случае single-expression не принимаются. Зная гениальный компилятор typescript, который выводит практически всё и вся

Google

Руслан
22.06.2017
15:22:24

Adam
22.06.2017
15:22:41
??

Руслан
22.06.2017
15:22:44
и выводит он местами меньше чем флоу
и хуже
есть целые доклады

Adam
22.06.2017
15:23:37
я отлично знаю typescript, выводит он не всё, но я просто знаю, как ему помогать
но практически всё

Руслан
22.06.2017
15:24:32
да. он отлично выводит any

Adam
22.06.2017
15:25:04
определяешь параметры функции - вывод обеспечен

Руслан
22.06.2017
15:25:16
не такой он божественный, как ты описываешь

Adam
22.06.2017
15:25:17
любой, а не только single-expression
вы давно не пользовались

Руслан
22.06.2017
15:26:52
я пользовался много, и последняя версия была 2.3

Adam
22.06.2017
15:27:16
у меня есть, наверное, почти все кейсы, спрашивай, если что

Руслан
22.06.2017
15:27:37
я к счатью пока на пишу, но приму к сведению, спасибо
вообще стараюсь не писать single expression, а в стандартном стиле чтобы явно указать выходной тип
вот пример

? animufag ?
22.06.2017
15:29:11
https://www.typescriptlang.org/play/#src=function%20foo%3CT%3E()%3A%20T%20%7B%0D%0A%20%20const%20serverObj%3A%20any%20%3D%20%7B%20%5BMath.random()%5D%3A%201%20%7D%0D%0A%20%20return%20serverObj%0D%0A%7D%0D%0A%0D%0Atype%20A%20%3D%20%7B%0D%0A%20%20num%3A%201%0D%0A%7D%0D%0A%0D%0Aconsole.log(foo%3CA%3E())

Adam
22.06.2017
15:29:21

? animufag ?
22.06.2017
15:29:24
просто в другом чатике мне кидали

Google

? animufag ?
22.06.2017
15:29:32
думаю ок к месту
такой тайпсейф

Руслан
22.06.2017
15:29:41
с дженериками все плохо

Adam
22.06.2017
15:30:01
где?

Руслан
22.06.2017
15:30:43
в тайпскрипте, увидел пример, вспомнил что были проблемы

Adam
22.06.2017
15:31:34
не было проблем, сравнивал с C# - примерно также себя ведут, за исключением In-out

Руслан
22.06.2017
15:32:02
function foo(num: number) {
if (num > 10) {
return "cool";
}
}
console.log(foo(1).toString());
вот это flow ловит)

Admin
ERROR: S client not available

Adam
22.06.2017
15:32:52
Что значит 'ловит?' По-вашему, должно возвращаться Number?

Руслан
22.06.2017
15:32:57
а typescript string вывел
тайпскрипт неправильно тип вывел
тут string?

Adam
22.06.2017
15:33:27
так string и возвращается

Руслан
22.06.2017
15:33:31
не всегда
string|undefined

Adam
22.06.2017
15:33:50
string | undefined
так вы включили null-safe?

Руслан
22.06.2017
15:34:25
а он по дефолту выключен

Google

Adam
22.06.2017
15:34:27
striictNull - что-то

Руслан
22.06.2017
15:34:31
и мало кто включает

Adam
22.06.2017
15:34:31
lf
да

Руслан
22.06.2017
15:34:42
это тоже проблема языка

Adam
22.06.2017
15:34:49
нет, многие знаю современную тенденцию и включают

Руслан
22.06.2017
15:34:55
надо загонять людей в счастье

Igor
22.06.2017
15:39:03

Руслан
22.06.2017
15:39:20
вот отсюда: http://djcordhose.github.io/flow-vs-typescript/flow-typescript-2.html#/

Adam
22.06.2017
15:41:30
а что не так?

Руслан
22.06.2017
15:41:46
ну то что у тебя теперь в котах лежат собаки
массивы то мутабельные

Adam
22.06.2017
15:43:30
Собак ты сможешь использовать только как животных
ты же не использовал ограничение дженерик-типа

Руслан
22.06.2017
15:43:58
да, но в cats теперь собаки

Adam
22.06.2017
15:44:15
так везде

? animufag ?
22.06.2017
15:44:38
см презентацию

Adam
22.06.2017
15:45:03
и собак ты будешь использовать как животных, если типизировал Animal

Quantum Harmonizer
22.06.2017
15:45:11