Size: a a a

Kotlin Community

2020 February 25

AM

Andrew Mikhaylov in Kotlin Community
Мне первая статья понравилась, ради неё пошарил)
источник

AM

Andrew Mikhaylov in Kotlin Community
В чате представитель Яндекса говорит, что у них тоже есть KMP в проде, кстати :)
источник

K

Kopusha in Kotlin Community
можно как-то переписать такое
foo = if (bar == null) Foo() else null?
в каком-то хипсторском стиле, чтоб не писать else null

UPD: edit
источник

SB

Sergey Barmin in Kotlin Community
takeIf
источник

КЧ

Константин Чайко in Kotlin Community
можно ещё чтобы foo по умолчанию было = null и тогда else null можно выкинуть и будет
if (bar == null) foo = Bar()
источник

D

Dmitry in Kotlin Community
тут bar это переменная, которая должна возвращаться только один раз и вам надо убедиться, что ее 2 раза не запрашивают?
источник

D

Dmitry in Kotlin Community
Странный шаблон..
источник

K

Kopusha in Kotlin Community
исправил
источник

BP

Bogdan Panchenko in Kotlin Community
Kopusha
исправил
Нам нехватки контекста
источник

SB

Sergey Barmin in Kotlin Community
Константин Чайко
можно ещё чтобы foo по умолчанию было = null и тогда else null можно выкинуть и будет
if (bar == null) foo = Bar()
Тогда это будет var
источник

КЧ

Константин Чайко in Kotlin Community
Sergey Barmin
Тогда это будет var
блин, да, согласен (
источник

КЧ

Константин Чайко in Kotlin Community
тогда может реально takeIf лучше
источник

SB

Sergey Barmin in Kotlin Community
Константин Чайко
тогда может реально takeIf лучше
С этим я хз, будет ли заведен инстанс реально
источник

K

Kopusha in Kotlin Community
где-то есть переменная bar?
и где-то ниже в конструкторе объекта хочу
Blablah(
  field1 = ...,
  field2 = ...,
  foo =  if (bar == null) Foo() else null
  ...
)
источник

AM

Andrew Mikhaylov in Kotlin Community
Константин Чайко
тогда может реально takeIf лучше
Чисто теоретически не идентичное поведение, если у Bar() есть сайд-эффекты.
источник

K

Kopusha in Kotlin Community
думал о takeIf, но не придумал. Как он тут встанет? Только если вычисление будет до проверки. Или котлин умеет такое оптимизировать?
источник

SB

Sergey Barmin in Kotlin Community
Kopusha
думал о takeIf, но не придумал. Как он тут встанет? Только если вычисление будет до проверки. Или котлин умеет такое оптимизировать?
Ну, там же просто Foo().takeIf { bar == null } , но да, инстанс будет создан
источник

K

Kopusha in Kotlin Community
а, ок, значит все-таки без оптимизаций
источник

SB

Sergey Barmin in Kotlin Community
Есть совсем страшный хипстерский вариант
источник

SB

Sergey Barmin in Kotlin Community
bar?.let { null } ?: Foo()
источник