Ruby/Базовые типы данных: различия между версиями
Содержимое удалено Содержимое добавлено
Нет описания правки |
Нет описания правки |
||
Строка 79:
[<span style="color:#006400">1, 0, 740, 14, 25</span>] <span style="color:#00008B"># целочисленный массив</span>
[<span style="color:#B8860B">"a", "й", "6", 'Br'</span>,
[[<span style="color:#006400">1, 2</span>], [<span style="color:#006400">3, 4</span>]] <span style="color:#00008B"># двумерный целочисленный массив</span>
<span style="color:#00008B"># Матрица — это объект класса Matrix</span>
<span style="color:#00008B"># Двумерный массив — это не матрица целых чисел</span>
[<span style="color:#B8860B">"1-й элемент смешанного массива"</span>, <span style="color:#
<span style="color:#C71585">array</span> = [<span style="color:#B8860B">"Этот массив пойдёт в переменную array"</span>, <span style="color:#B8860B">"Як-цуп-цоп, парви каридулла"</span>]
Массив лучше всего вообразить как гусеницу или поезд с лапками-запятыми вместо колёс. Ползёт он всегда влево, на левом же конце его локомотив — первый элемент. Первый потому, что элементы упорядочены. Если знаете порядковый номер элемента, то легко получить его значение:
<
В мире поездов-гусениц счёт вагонов начинается с локомотива, а не со следующего за ним вагона. Таким образом локомотив — это как бы нулевой вагон.
<
Массивы кажутся странными с кавычками, но частенько бывают полезны при написании компьютерных программ. Возможно, вы даже поймёте, почему он ползёт всегда влево.
Строка 112:
Стро́ки начинаются и заканчиваются <code>"</code> (программистскими кавычками) или <code>'</code> (машинописным апострофом). Пример:
<span style="color:#B8860B">"мама мыла раму"</span> <span style="color:#00008B"># строка в кавычках</span>▼
<span style="color:#B8860B">'рама сопротивлялась'</span> <span style="color:#00008B"># строка в апострофах</
▲"мама мыла раму" # строка в кавычках
▲'рама сопротивлялась' # строка в апострофах</source>
Стро́ки подобны массивам символов, поэтому их часто преобразуют к массивам, чтобы использовать богатый набор методов, а потом результат делают строкой.
Строка 122 ⟶ 121 :
[[w:Ассоциативный массив|Ассоциативные массивы]] подобны массивам [[w:Упорядоченная пара|упорядоченных пар]]. Работают они подобно словарям: фигурная скобка символизирует боковой вид на открытую книгу, а стрелка <code>=></code> покажет читателю связь каждой сущности с какой-то другой. Вторая фигурная скобка говорит, что пора закрывать книгу.
<
Но можно и без фигурных скобок, одной стрелкой:
<
Например:
<
<span style="color:#C71585">puts array</span>[<span style="color:#B8860B">"807"</span>] <span style="color:#00008B"> #=> nil</span>
<span style="color:#C71585">puts array</span>[<span style="color:#006400">807</span>] <span style="color:#00008B"> #=> Это число улыбается!</span>
<span style="color:#C71585">puts array</span>[<span style="color:#006400">1</span>] <span style="color:#00008B"> #=> nil</span>
<span style="color:#C71585">puts array</span>[<span style="color:#B8860B">"Превед"</span>] <span style="color:#00008B">#=> Медвед</
Ассоциативные массивы оставляют возможность хранения данных разного типа только в ассоциативном виде.
Строка 142 ⟶ 141 :
Чтобы было удобней получать подмассив или подстроку, был введён простенький тип данных — диапазон (класс <code>Range</code>). Диапазон формируется тремя элементами: начало, конец и тип протяжённости (символ <code>..</code> или <code>...</code>). Начало и конец должны быть одного типа данных (одного класса) и быть ''перечислимыми'', что значит, иметь метод <code>.succ</code>. Пример диапазонов:
<
<span style="color:#B8860B">"a"..."z"</span> <span style="color:#00008B"># то же, что и "a".."y"</span>
<span style="color:#006400">1..100</span>
<span style="color:#006400">1...100</span> <span style="color:#00008B"># то же, что и 1..99</
Диапазон-мотоцикл (<code>..</code>) проезжает от первого указанного объекта к его <code>.succ</code> (''succedent'' — «последующему»), и до последнего включительно. Три точки — то же, но мотоцикл остановился прямо перед последним элементом. Ещё раз:
<code>1..99</code>
Объекты, имеющие <code>.succ</code> называют [[w:Последовательность|последовательными]]: этим методом можно по текущему элементу достоверно определить следующий.
Строка 157 ⟶ 156 :
Самодельные и неабстрактные составные типы данных называются классами. Если для вас это новость, то почитайте [[Объектно-ориентированное программирование|викиучебник об объектно-ориентированном программировании]] или [[w:Объектно-ориентированное программирование|статью в Википедии]]. Вообще, в Ruby ''всё'' в конечном счёте принадлежит классу <code>Object</code>.
str = <
str.<span style="color:#9932CC">class</span> <span style="color:#00008B">#=> String</span>
str.<span style="color:#9932CC">class</span>.<span style="color:#9400D3">superclass</span> <span style="color:#00008B">#=> Object</
Классы можно определять и создавать по ним объекты. Внутри класса может быть много всего интересного, и у него может быть фамильное [[w:Дерево (теория графов)|дерево]], то есть классы Ruby поддерживают наследование. Однако заметим, что [[w:Множественное наследование|множественное наследование]] в Ruby не разрешается. И ещё много всего интересного можно сделать с классами и объектами. Но об этом позже.
[[Категория:Ruby|Базовые типы данных]]
|