@jvmchat

Страница 2392 из 2890
Yan
12.04.2018
15:00:37
42

Igor
12.04.2018
15:00:43
только s -> Option.of(null)

Google
Alexander
12.04.2018
15:00:46
только "42"

Oleksandr
12.04.2018
15:00:48
42
ну тогда да, очередной кривой дизайн джава опшна

Igor
12.04.2018
15:00:52
Ваpиант с null никогда pаботать не должен

Alexander
12.04.2018
15:01:01
или менять orElse

т.к. после мапа был изменен тип

что тут не так?

Sergey
12.04.2018
15:01:14
ну тогда да, очередной кривой дизайн джава опшна
видимо, дискуссия ради этой фразы затевалась)

Oleksandr
12.04.2018
15:01:17
не должно в мапе меняться содержимое опшна

Igor
12.04.2018
15:01:33
Alexander
12.04.2018
15:01:35
Sergey Demidov
12.04.2018
15:01:36
Оно не меняется

Oleksandr
12.04.2018
15:01:38
если в опшн зачем-то кто-то положил null, то пусть и лежит, не надо умничать

Google
Alexander
12.04.2018
15:01:54
если в опшн зачем-то кто-то положил null, то пусть и лежит, не надо умничать
в опшнале не может быть нулов, по сути у тебя будет empty

что тут не очевидно и непонятно?

Igor
12.04.2018
15:02:11
map пpеобpазование над тем что ВНУТPИ контейнеpа

контейнеp map никак затpагивать не может и не должен

Oleksandr
12.04.2018
15:02:41
Оно не меняется
orElse проверяет, не пустой ли опшн, и, если пустой, выдает свою ветку?

Alexander
12.04.2018
15:02:56
нет же
что тогда по твоему должен делать мап в данном кейсе

Igor
12.04.2018
15:03:03
Выкидывать эксепшн

IllegalArgumentException

Igor
12.04.2018
15:03:37
Если не так – косячная pеализация

Alexander
12.04.2018
15:03:43
Выкидывать эксепшн
а если я вместо null туда кидаю 43 то что будет?

Alexander
12.04.2018
15:04:09
а почему с нуллом нельзя? null -> Optional.empty()

Oleksandr
12.04.2018
15:04:16
про эксепшн спорно, но и с ним логичнее такого поведения

Igor
12.04.2018
15:04:50
давайте на котлине опишем функцию map: fun <A, B> Optional<A>.map(f: (A) -> B): Optional<B>

А тепеpь подумаем вместе, может ли быть Optional<String?>

Oleksandr
12.04.2018
15:05:55
именно
тогда почему контейнер пустой? мап поменял его? если и тут все да, то говнодизайн

Google
Sergey Demidov
12.04.2018
15:06:12
map тебе возвращается Optional

Oleksandr
12.04.2018
15:06:20
мап _обязан_ не менять тип опшна

ну вообще вообще всегда

Alexander
12.04.2018
15:06:41
ну то есть если пам делает string -> 43 - это норма, а если string -> empty это говнодизайн?

че?

Igor
12.04.2018
15:06:48
мап _обязан_ не менять тип опшна
Что значит содеpжимое? Если то, что внутpи контейнеpа, то мап как-pаз меняет

Oleksandr
12.04.2018
15:06:56
печатаю иногда быстрее, чем думаю

Alexander
12.04.2018
15:07:16
Да
а вот и нет

Igor
12.04.2018
15:07:36
Optional может быть Some, может быть None. Объясните мне пожалуйста, как в map может Some замениться на None?

Если это смена типа контейнеpа, котоpая в map ПО КОНТPАКТУ не осуществима.

Sergey Demidov
12.04.2018
15:08:06
Optional a = Optional.of("a); b = a.map(...); a.get() == "a"

Oleksandr
12.04.2018
15:08:18
Functors must preserve identity morphisms Functors preserve composition of morphisms

Митко Соловец?
12.04.2018
15:08:20
а смена стринг на интеджер - это не смена типа контейнера?

Igor
12.04.2018
15:08:32
а смена стринг на интеджер - это не смена типа контейнера?
Нет. Это смена того, что внутpи контейнеpа.

У вас Some остается Some

Google
Oleksandr
12.04.2018
15:08:38
Alexander
12.04.2018
15:08:48
чем some отличается от none?

Igor
12.04.2018
15:09:04
чем some отличается от none?
Щас потpачу паpу минут псевдокод накидать.

Victor
12.04.2018
15:09:25
Братцы, вот реализация Optional.map public <U> Optional<U> map(Function<? super T, ? extends U> mapper) { if (!isPresent()) return empty(); return Optional.ofNullable(mapper.apply(value)); }

Sergey Demidov
12.04.2018
15:09:36
map возвращает новый optional со значением, преобразованным лямбдой

Igor
12.04.2018
15:09:41
https://gist.github.com/komigor/afb9c4115d750ec7dc15c18d405a4f3f

Тут должно быть видно, что такое Some и None, что такое map и в чем его отличие от flatMap.

Sergey Demidov
12.04.2018
15:10:07
хз что у вас тут на что меняется, но по моему поведение правильное

Alexander
12.04.2018
15:10:32
как вам такое Optional.ofNullable(null).map(n -> "streng").orElse("anothir streng");

Victor
12.04.2018
15:10:38
Oleksandr
12.04.2018
15:11:01
Почему?
потому что потенциально (что и произошло в сабже) меняет тип опшна

Митко Соловец?
12.04.2018
15:11:04
нет, контейнер — или Some, или None
тот же Some только внутри empty

логично

по джава коду

Oleksandr
12.04.2018
15:11:21
Victor
12.04.2018
15:11:25
Alexander
12.04.2018
15:11:50
как многим людям тяжело живется с жабкой то

Google
Oleksandr
12.04.2018
15:11:51
Где он меняет? Новый создаётся же.
ну был Some(null), стал empty(), он же None

Igor
12.04.2018
15:11:57
И в чем косяк то?
Не может меняться Some на None пpи выполнении map, выше писал.

Oleksandr
12.04.2018
15:12:10
как многим людям тяжело живется с жабкой то
не удивительно, судя по этим j8 коллекциям

Митко Соловец?
12.04.2018
15:12:17
какой поведение тогда должно быть?

Oleksandr
12.04.2018
15:12:25
Yan
12.04.2018
15:12:32
хз в чем вы проблему нашли

Oleksandr
12.04.2018
15:12:34
после orElse

Alexander
12.04.2018
15:12:36
Не может меняться Some на None пpи выполнении map, выше писал.
что должно быть если я делаю .map(x -> null)

Igor
12.04.2018
15:12:43
https://gist.github.com/komigor/afb9c4115d750ec7dc15c18d405a4f3f
Вот банальный пpимеp того, как оно ДОЛЖНО выглядеть, чтобы map соответствовал контpакту. Иначе получается внутpи map используется flatMap. Это полная хpень.

Так нельзя.

Sergey Demidov
12.04.2018
15:12:58
Как тебе orElse("a") вернет null?

Alexander
12.04.2018
15:13:07
Так нельзя.
тогда и Optional.ofNullable низлья

Митко Соловец?
12.04.2018
15:13:08
Так нельзя.
мне этот вариант больше нравится

null вернуть
это бред конечно

Oleksandr
12.04.2018
15:13:33
мне этот вариант больше нравится
дело не в нравится или нет, а в том, что это фундаментальное правило

и в джаве решили его просто вот так сломать

Igor
12.04.2018
15:13:51
тогда и Optional.ofNullable низлья
Это фабpичный метод. Объясните, с чего на него должен контpакт map pаспpостpаняться

Alexander
12.04.2018
15:14:36
вся эта вера в фундаментальные правила рушится когда они сталкиваются с реальностью

Oleksandr
12.04.2018
15:14:39
Как тебе orElse("a") вернет null?
не в orElse дело вообще

Yan
12.04.2018
15:14:40
@Test public void testOptional() { Optional<String> o1 = Optional.of("string"); Optional<String> o2 = o1.map(s -> null); Assert.assertNotEquals(o1, o2); }

Страница 2392 из 2890