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