Size: a a a

2021 June 29

g

gui in dlang.ru
import std;

void main() {
string a = "abc";
//a[2] = 'd'; // не собирается
a = "efg";
}
источник

g

gui in dlang.ru
небольшой наглядный пример
источник

И

Игорь in dlang.ru
void main()
{
   immutable a = "abc";
   auto b = "abc";
   pragma(msg, typeof(a));
   pragma(msg, typeof(b));
}
источник

g

gui in dlang.ru
то есть ты можешь менять переменную со строкой, но не символы в ней
источник

И

Игорь in dlang.ru
печатает
immutable(string)
string
источник

EP

Egor Pugin in dlang.ru
а в стдлибе для строк какой класс?
источник

МВ

Макс Воробьев... in dlang.ru
нет таких
источник

EP

Egor Pugin in dlang.ru
если строки имьютабл, как же менять там буквы?
источник

МВ

Макс Воробьев... in dlang.ru
создавать новые строки
источник

МВ

Макс Воробьев... in dlang.ru
стд либа много где просто с рейнджем работает
источник

DH

Dark Hole in dlang.ru
Это на то и строки, чтобы быть immutable. А если ты хочешь их менять — делаешь массив символов (char[])
источник

EP

Egor Pugin in dlang.ru
а уже char[] можно и сложить с друим и букву отдельную поменять?
источник

МВ

Макс Воробьев... in dlang.ru
сложить можно и string
источник

МВ

Макс Воробьев... in dlang.ru
это создаст новый string
источник

DH

Dark Hole in dlang.ru
Строки тоже можно складывать. А вот букву поменять только у char[], ага
источник

МВ

Макс Воробьев... in dlang.ru
что-бы не плодить стринги - есть appender
источник

DH

Dark Hole in dlang.ru
Разобрался теперь?)
источник

EP

Egor Pugin in dlang.ru
да, уже лучше
источник

KF

Konstantin Firsov in dlang.ru
там же вроде есть отличия для строковой переменной и строкового литерала? Пишут, что последний неявно null-terminated и может преобразовываться в const(char)*, сделано для совместимости с си-функциями, чтобы не вызывать toStringz лишний раз. Вроде бы пост в ди-блоге недавно был на эту тему...
источник

KF

Konstantin Firsov in dlang.ru
источник