Почему строитель строк не существует везде? - PullRequest
2 голосов
/ 12 августа 2010

Я понимаю мотивацию для класса String Builder, но есть ли у всех языков такой?Должны ли они?Я думаю конкретно о PHP, Perl, Python и Ruby.Я знаю C # и Java.Если другие нет, то почему бы и нет?Разве они не страдают от одной и той же проблемы реализации?Или им все равно?

Ответы [ 2 ]

7 голосов
/ 12 августа 2010

Не на всех языках есть построитель строк.

C, например, даже не имеет строк.

В C ++ std :: strings являются изменяемыми - их можно изменить, поэтому нет особой необходимости в отдельном классе построителя строк.

В C # (и остальной части .NET) строки неизменяемы - их нельзя изменить, только заменить. Это приводит к проблеме, вызывающей необходимость в StringBuilder.

Технически, строки .NET являются ссылочными типами, претендующими на тип значений. Это было сделано для того, чтобы они действовали как родные типы (int, float, decimal).

0 голосов
/ 12 августа 2010

Нет необходимости в строителях строк при наличии потоков строк - файловых объектов для создания строк.

Например, в Python есть StringIO:

from cStringIO import StringIO
sio = StringIO()
sio.write("Hello")
sio.write(" world!!")
sio.write(111)
sio.write('!')
print sio.getvalue()

Hello world!!111!

В Ruby есть своисобственный StringIO тоже.В C ++ эквивалент равен std::stringstream.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...