Size: a a a

Programming Offtop

2020 December 24

AM

Andrew Mikhaylov in Programming Offtop
Bogdan Panchenko
@ilmirus "Inline classes cannot have var properties as well as extension var properties."

А почему такое ограничения ? Я не могу иметь мутабельную структуру внутри инлайн класса ?
Так это ж теперь вэлью-классы
источник

BP

Bogdan Panchenko in Programming Offtop
Vladimir Petrakovich
Да при чём тут внутренности его
inline class V(private val map: MutableMap) {
    var value: Int get, set
}


я так понял такое уже нельзя будет делать
источник

VP

Vladimir Petrakovich in Programming Offtop
Bogdan Panchenko
да вот как раз оно не обясняет, у тебя инлайн класс с мапкой на 1000 элементом и ее клонировать ?
Вот что тут непонятного?
Let us explain the rationale behind the last limitation. We want the value.properties = 1 syntax to change the value of value-based class: instead of generating value.setProperty(1) the compiler will generate something like value = value.clone(property = 1). So, we reserve the syntax of mutating property to mutate the class in the future.
источник

I

Ilmir in Programming Offtop
Bogdan Panchenko
@ilmirus "Inline classes cannot have var properties as well as extension var properties."

А почему такое ограничения ? Я не могу иметь мутабельную структуру внутри инлайн класса ?
Можешь, если она объявлена val
источник

VP

Vladimir Petrakovich in Programming Offtop
Bogdan Panchenko
inline class V(private val map: MutableMap) {
    var value: Int get, set
}


я так понял такое уже нельзя будет делать
А такое и сейчас нельзя
источник

BP

Bogdan Panchenko in Programming Offtop
Vladimir Petrakovich
А такое и сейчас нельзя
можно :D
источник

BP

Bogdan Panchenko in Programming Offtop
Ilmir
Можешь, если она объявлена val
ok
источник

VP

Vladimir Petrakovich in Programming Offtop
А, ну в смысле что это computed property? Да, это можно
источник

BP

Bogdan Panchenko in Programming Offtop
Vladimir Petrakovich
А, ну в смысле что это computed property? Да, это можно
да я не полный пример привел. в лом писать было
источник

BP

Bogdan Panchenko in Programming Offtop
Andrew Mikhaylov
Так это ж теперь вэлью-классы
иди на гитхаб и делай пул рекваест с переименованием, я прсото цитирую
источник

AM

Andrew Mikhaylov in Programming Offtop
Bogdan Panchenko
иди на гитхаб и делай пул рекваест с переименованием, я прсото цитирую
Не, я о том, что это вэлью-классы, отсюда и ограничение — на var-ы в разрезе вэлью-классов конкретные планы
источник

VP

Vladimir Petrakovich in Programming Offtop
Bogdan Panchenko
ниже я прочитал, но ясней не стало
Когда ты пишешь
val foo = ValueClass(...)
подразумевается, что foo - это значение, которое само по себе иммутабельное. И var внутри - это что-то странное.
Потом планируется, что можно будет делать
var foo = ValueClass(...)
foo.bar = baz

И при этом ты не сам экземпляр ValueClass модифицируешь, а свойство, его содержащее.
источник

BP

Bogdan Panchenko in Programming Offtop
Vladimir Petrakovich
Когда ты пишешь
val foo = ValueClass(...)
подразумевается, что foo - это значение, которое само по себе иммутабельное. И var внутри - это что-то странное.
Потом планируется, что можно будет делать
var foo = ValueClass(...)
foo.bar = baz

И при этом ты не сам экземпляр ValueClass модифицируешь, а свойство, его содержащее.
так то было про то что "основное" свойство не может быть var ?
источник

AM

Andrew Mikhaylov in Programming Offtop
Bogdan Panchenko
так то было про то что "основное" свойство не может быть var ?
Не только. Я понимаю, любой вар, включая экстеншны, будет про копирование.
источник

BP

Bogdan Panchenko in Programming Offtop
Andrew Mikhaylov
Не только. Я понимаю, любой вар, включая экстеншны, будет про копирование.
yну это задница. Закапываем
источник

BP

Bogdan Panchenko in Programming Offtop
Ниша у них будет очень низкая
источник

AM

Andrew Mikhaylov in Programming Offtop
Не могу сказать, что это прям дофига логично в разрезе вышеприведенного примера, с этим надо пожить, чтобы проникнуться. Жаль, что я до котлина не добираюсь.
источник

BP

Bogdan Panchenko in Programming Offtop
у меня инлайн типы BitSet обвязывают, удобненько
источник

VP

Vladimir Petrakovich in Programming Offtop
Bogdan Panchenko
так то было про то что "основное" свойство не может быть var ?
То - это что?
Любое = со свойством value class слева - это либо модификация свойства, содержащиего этот класс, либо невалидный код.
Экстеншены бы тут всё сломали.
источник

VP

Vladimir Petrakovich in Programming Offtop
Andrew Mikhaylov
Не могу сказать, что это прям дофига логично в разрезе вышеприведенного примера, с этим надо пожить, чтобы проникнуться. Жаль, что я до котлина не добираюсь.
А что, во всяких плюсах похожий код работает иначе?
источник