Size: a a a

2021 February 24

DH

Dark Hole in dlang.ru
Oleg
в Д есть какиенить аттрибуты или ref out scope, которые отслеживают жизнь объекта и не позволяют его куданить зассайнить или передать кудато еще
т.е. есть объект с
string getStringToInternalData()
так вот этот стринг не должен кудать то передаться еще или гдето сохраниться, потому что он указывает на внутренние данные, которые могут исчезнуть - часть буфера вернули как стринг, буфер ушел обратно в пул, и если стринг жив, то писта
Насколько я знаю — нет. Проще всего перед return его продублировать и не париться.
источник

OB

Oleg B in dlang.ru
Oleg
в Д есть какиенить аттрибуты или ref out scope, которые отслеживают жизнь объекта и не позволяют его куданить зассайнить или передать кудато еще
т.е. есть объект с
string getStringToInternalData()
так вот этот стринг не должен кудать то передаться еще или гдето сохраниться, потому что он указывает на внутренние данные, которые могут исчезнуть - часть буфера вернули как стринг, буфер ушел обратно в пул, и если стринг жив, то писта
string в таком случае возвращать не нужно, нужно const(char)[]
источник

O

Oleg in dlang.ru
и что это изменит?
источник

OB

Oleg B in dlang.ru
Oleg
и что это изменит?
string это immutable(char)[], а следовательно предполагается, что память никуда не денется и не изменится
источник

OB

Oleg B in dlang.ru
это так же позволяет между потоками кидать данные
источник

DH

Dark Hole in dlang.ru
Проблему это не решит, впрочем
источник

OB

Oleg B in dlang.ru
на принимающей стороне нужно писать void foo(scope const(char)[] str)
источник

OB

Oleg B in dlang.ru
Dark Hole
Проблему это не решит, впрочем
ну в ногу ты себе всегда можешь стрельнуть кастанув что угодно во что угодно
источник

DH

Dark Hole in dlang.ru
Oleg B
ну в ногу ты себе всегда можешь стрельнуть кастанув что угодно во что угодно
Можно, но у нас вполне конкретная ситуация, и кастов вроде не видно
источник

OB

Oleg B in dlang.ru
Dark Hole
Проблему это не решит, впрочем
как минимум это исправит ошибку
источник

OB

Oleg B in dlang.ru
потому что если данные могут исчезнуть это уже не string
источник

OB

Oleg B in dlang.ru
Dark Hole
Проблему это не решит, впрочем
как минимум нельзя это значение присвоить строке, нужно будет явно дублировать или кастовать
источник

DH

Dark Hole in dlang.ru
Oleg B
как минимум нельзя это значение присвоить строке, нужно будет явно дублировать или кастовать
Т.е. проще под капотом продублировать в принципе
источник

DH

Dark Hole in dlang.ru
Кстати scope var никак не проверяются на return
источник

OB

Oleg B in dlang.ru
Dark Hole
Кстати scope var никак не проверяются на return
а в @life?
источник

DH

Dark Hole in dlang.ru
Хм
источник

DH

Dark Hole in dlang.ru
А его уже заимплементили?
источник

ВК

Виталий Кулич... in dlang.ru
У Д1 стринг=сим[] , у Д2 immutable (сим[]) Потому ткст и ткст2 в Динрусе - основной напряг. Но.. Тут идёт ещё подвязка к LLVM. А внегласно к нему узе подвязались и Qt, и  даже компилятор  Visual Studio.... А это значит что?
источник

DH

Dark Hole in dlang.ru
Виталий Кулич
У Д1 стринг=сим[] , у Д2 immutable (сим[]) Потому ткст и ткст2 в Динрусе - основной напряг. Но.. Тут идёт ещё подвязка к LLVM. А внегласно к нему узе подвязались и Qt, и  даже компилятор  Visual Studio.... А это значит что?
Никому не интересно
источник

ВК

Виталий Кулич... in dlang.ru
источник