Rubyn: различия между версиями
Содержимое удалено Содержимое добавлено
Byzantine (обсуждение | вклад) м орфография |
|||
Строка 1288:
=== Что используется в качестве ключей? ===
В качестве ключей ассоциативного массива можно использовать любые типы. Например, другие ассоциативные массивы, строки, числа, символы или просто
{{Внимание|Если состояние объектов-ключей изменилось, то хешу необходимо вызвать метод <code>.rehash</code>.}}
Строка 1303:
В данном примере ключами хеша (<code>xew</code>) являются два массива (<code>maccuB_1</code> и <code>maccuB_2</code>). Одному из них (<code>maccuB_1</code>) мы изменили нулевой элемент (с «а» на «я»). После этого доступ к значению был потерян. После выполнения метода <code>.rehash</code> все встало на свои места.
{{info|''Как Руби отслеживает изменение ключа в ассоциативном массиве? Очень просто: с помощью метода <code>.hash</code>, который генерирует "контрольную сумму"
=== Способы создания ассоциативного массива ===
Строка 2239:
==== Методы преобразования к строке ====
Руби сам преобразует типы для некоторых простых операций. Например, при включении строки в другую он воспользуется имеющимся у
<source lang=ruby>class Container
Строка 2251:
p "Это #{cont}" #-> "Это контейнер"</source>
Если нужно, чтобы ваши
<source lang=ruby>class Container
Строка 2292:
== Подробнее о методах ==
Все функции в Ruby являются методами, то есть свойственны
=== Создание метода ===
Строка 2366:
p "Array has something" if arr.any?</source>
Методы с восклицательным знаком на конце меняют
<source lang=ruby>string = " Some string with spaces "
Строка 2451:
* Поддержание индекса в цикле
* Забота об итераторах как отдельных
* Закрытие ресурса после его использования
* Забота о контексте, в котором выполняется операция
Строка 2638:
==== Как добавить метод к массиву/строке/венику? ====
Важно помнить, что в Ruby все типы являются
<code>class BeHuK
Строка 2675:
{{Внимание|операция расширения класса (добавление нового метода к существующему) по сути не отличается от создания нового класса.}}
У
<code>str = "Crazy fox jumps over a lazy dog"
Строка 2715:
будут удалены. Так что даже в этом случае [[w:велосипед|велосипед]] изобретать не стоит!}}
Если к классу надо добавить много методов сразу, то при описании класса можно выйти на уровень его
Добавим к классу <code>File</code> метод <code>myself</code>, который дает быстрый доступ к текущему файлу с исходным кодом:
|