Bytea — различия между версиями
Korvin (обсуждение | вклад) (Новая: Класс <tt>bytea</tt> (от англ. ''byte array'' — массив байтов) используется для работы с данными, как с потоком байт...) |
Korvin (обсуждение | вклад) м (→оператор +) |
||
(не показаны 3 промежуточные версии 1 участника) | |||
Строка 16: | Строка 16: | ||
[[#find|find]] | [[#find|find]] | ||
[[#find_first_of|find_first_of]] | [[#find_first_of|find_first_of]] | ||
− | [[#find_first_not_of|find_first_not_of]] | + | [[#find_first_not_of|find_first_not_of]]</tt> |
'''Приводится к типам''': <tt>[[int]] [[real]] [[uid]] [[string]]</tt> <br> | '''Приводится к типам''': <tt>[[int]] [[real]] [[uid]] [[string]]</tt> <br> | ||
'''Реализует операторы''': | '''Реализует операторы''': | ||
Строка 33: | Строка 33: | ||
'''Возвращает''': <tt>int</tt> <br> | '''Возвращает''': <tt>int</tt> <br> | ||
− | Оператор индексного чтения служит для получения значения некоторого байта расположенного по указанному индексу. | + | Оператор индексного чтения служит для получения значения некоторого байта расположенного по указанному индексу. Если указан индекс, выходящий за текущие границы массива, будет сгенерировано исключение [[Классы исключений#ERangeError|ERangeError]]. |
− | + | ||
operator <nowiki>[]=</nowiki> (''индекс'': <tt>int</tt>, ''значение'': <tt>int</tt>) <br> | operator <nowiki>[]=</nowiki> (''индекс'': <tt>int</tt>, ''значение'': <tt>int</tt>) <br> | ||
'''Возвращает''': <tt>int</tt> <br> | '''Возвращает''': <tt>int</tt> <br> | ||
− | Оператор индексной записи, напротив, служит для установки значения байта расположенного по соответствующему индексу. | + | Оператор индексной записи, напротив, служит для установки значения байта расположенного по соответствующему индексу. Если указан индекс, выходящий за текущие границы массива, будет сгенерировано исключение [[Классы исключений#ERangeError|ERangeError]]. |
'''Примечание''': Имеет значение только самый младший байт переданного числа, то есть значения в диапазоне от 0 до 255. | '''Примечание''': Имеет значение только самый младший байт переданного числа, то есть значения в диапазоне от 0 до 255. | ||
Строка 48: | Строка 47: | ||
'''Возвращает''': <tt>bytea</tt> <br> | '''Возвращает''': <tt>bytea</tt> <br> | ||
− | Метод возвращает новый байт-массив, | + | Метод возвращает новый байт-массив, полученный путем конкатенации (сложения) текущего и переданного массивов. Размер внутреннего буфера увеличивается автоматически, однако в случае большого количества последовательных (циклических) конкатенаций, возможен предварительный вызов метода <tt>[[#resie|resize]]</tt>, для повышения быстродействия и уменьшения числа промежуточных операций копирования. |
== оператор += == | == оператор += == | ||
Строка 75: | Строка 74: | ||
== resize == | == resize == | ||
− | resize(''новый размер в байтах'': <tt>[[int]]</tt>) | + | resize(''новый размер в байтах'': <tt>[[int]]</tt>) <br> |
'''Возвращает''': текущий объект <br> | '''Возвращает''': текущий объект <br> | ||
− | Метод изменяет размер внутреннего буфера, устанавливая его равным переданному числу. При увеличении размера буфера, данные останутся нетронутыми, однако незанятая область будет содержать случайные данные. | + | Метод изменяет размер внутреннего буфера, устанавливая его равным переданному числу. При увеличении размера буфера, данные останутся нетронутыми, однако незанятая область будет содержать случайные данные. |
== clear == | == clear == |
Текущая версия на 18:31, 25 июня 2009
Класс bytea (от англ. byte array — массив байтов) используется для работы с данными, как с потоком байтов. Класс во многом похож на класс string. Отличие заключается в том, что string ориентируется на строковые данные в кодировке UTF-8, в то время как bytea ориентируется на байты.
Например, в случае строки "hello world" методы bytea:length и string:length вернут одно и то же число, поскольку байтовое представление будет одинаковым. В случае строки "привет мир", длины уже не будут совпадать, поскольку в кодировке UTF-8 символы кирилицы будут представляться уже двумя байтами.
Родители: Object
Методы:
empty
length
resize
clear
substr
replace
replace_all
insert
erase
find
find_first_of
find_first_not_of
Приводится к типам: int real uid string
Реализует операторы:
+,
+=,
<<,
индексного доступа,
присваивания,
сравнения
[править] индексные операторы
operator [] (индекс: int)
Возвращает: int
Оператор индексного чтения служит для получения значения некоторого байта расположенного по указанному индексу. Если указан индекс, выходящий за текущие границы массива, будет сгенерировано исключение ERangeError.
operator []= (индекс: int, значение: int)
Возвращает: int
Оператор индексной записи, напротив, служит для установки значения байта расположенного по соответствующему индексу. Если указан индекс, выходящий за текущие границы массива, будет сгенерировано исключение ERangeError.
Примечание: Имеет значение только самый младший байт переданного числа, то есть значения в диапазоне от 0 до 255.
[править] оператор +
operator + (слагаемое: bytea)
Возвращает: bytea
Метод возвращает новый байт-массив, полученный путем конкатенации (сложения) текущего и переданного массивов. Размер внутреннего буфера увеличивается автоматически, однако в случае большого количества последовательных (циклических) конкатенаций, возможен предварительный вызов метода resize, для повышения быстродействия и уменьшения числа промежуточных операций копирования.
[править] оператор +=
operator += (слагаемое: bytea)
Возвращает: текущий объект
Метод изменяет текущий массив, дописывая ему в конец массив, переданный в качестве параметра. Размер внутреннего буфера увеличивается автоматически, однако в случае большого количества последовательных (циклических) конкатенаций, возможен предварительный вызов метода resize для повышения быстродействия и уменьшения числа промежуточных операций копирования.
[править] оператор <<
Эквивалент оператора +.
[править] empty
Возвращает: логическое значение
Метод возвращает истину, если массив непуст.
[править] length
Возвращает: int
Метод возвращает текущий размер данных в байтах.
[править] resize
resize(новый размер в байтах: int)
Возвращает: текущий объект
Метод изменяет размер внутреннего буфера, устанавливая его равным переданному числу. При увеличении размера буфера, данные останутся нетронутыми, однако незанятая область будет содержать случайные данные.
[править] clear
Возвращает: текущий объект
Очищает массив содержимого и сбрасывает внутренний буфер. После этого строка считается пустой.
[править] substr
substr(начальная позиция: int, количество байт: int)
Возвращает: bytea
Метод возвращает байт-массив, содержащий подмассив текущих данных, начиная с указанной позиции.
[править] replace
replace(начальная позиция: int, количество байт: int, блок замены: bytea)
Возвращает: текущий объект
Метод заменяет указанное количество байт с начальной позиции на блок замены.
[править] replace_all
replace_all(блок поиска: bytea, блок замены: bytea)
Возвращает: текущий объект
Метод находит все включения блока поиска в исходном массиве и заменяет их на блок замены.
[править] insert
insert(позиция: int, данные: bytea)
Возвращает: текущий объект
Метод вставляет переданные данные в исходныый массив, в указаную позицию, "раздвигая" имеющиеся данные.
[править] erase
erase_int(начальная позиция: int, количество байт: int)
Возвращает: текущий объект
Метод вырезает из текущих данных указанный блок.
[править] find
find(блок поиска: string [, начальная позиция: int])
Возвращает: int
Метод ищет в исходных данных искомый блок и возвращает его смещение. Для поиска блока, начиная с некоторой позиции, может быть передан второй параметр — смещение начальной позиции.