Ruby/Базовые типы данных: различия между версиями

Содержимое удалено Содержимое добавлено
Нет описания правки
м Откат правок 146.185.162.100 (обс.) к версии 81.13.92.74
Строка 15:
[[w:Число|Числа]] в Ruby выглядят так:
 
<spansource stylelang="color:#006400ruby">5</span> <span style="color:#00008B"># целое число</span>
<span style="color:#006400">-12</span> <span style="color:#00008B"># отрицательное целое число</span>
<span style="color:#006400">4.5</span> <span style="color:#00008B"># число с плавающей запятой</span>
<span style="color:#006400">076</span> <span style="color:#00008B"># восьмеричное число</span>
<span style="color:#006400">0b010</span> <span style="color:#00008B"># двоичное число</span>
<span style="color:#006400">0x89</span> <span style="color:#00008B"># шестнадцатиричное число</spansource>
 
Не будем пока углубляться и мельком взглянем на другие типы данных.
Строка 77:
* Много других методов. Все элементарные задачи для массивов решаются вызовом нужного метода.
 
<source lang="ruby">
 
[<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:#B8860B">"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">"Як-цуп-цоп, парви каридулла"]</spansource>]
 
Массив лучше всего вообразить как гусеницу или поезд с лапками-запятыми вместо колёс. Ползёт он всегда влево, на левом же конце его локомотив — первый элемент. Первый потому, что элементы упорядочены. Если знаете порядковый номер элемента, то легко получить его значение:
 
<spansource stylelang="color:#C71585ruby">array</span><span style="color:#006400">[1]</span> <span style="color:#00008B">#=> "Як-цуп-цоп, парви каридулла"</spansource>
 
В мире поездов-гусениц счёт вагонов начинается с локомотива, а не со следующего за ним вагона. Таким образом локомотив — это как бы нулевой вагон.
 
<spansource stylelang="color:#C71585ruby">array</span><span style="color:#006400">[0]</span> <span style="color:#00008B">#=> "Этот массив пойдёт в переменную array"</spansource>
 
Массивы кажутся странными с кавычками, но частенько бывают полезны при написании компьютерных программ. Возможно, вы даже поймёте, почему он ползёт всегда влево.
Строка 112:
Стро́ки начинаются и заканчиваются <code>"</code> (программистскими кавычками) или <code>'</code> (машинописным апострофом). Пример:
 
<source lang="ruby">
<span style="color:#B8860B">"мама мыла раму"</span> <span style="color:#00008B"># строка в кавычках</span>
<span style="color:#B8860B">'рама сопротивлялась'</span> <span style="color:#00008B"># строка в апострофах</spansource>
 
Стро́ки подобны массивам символов, поэтому их часто преобразуют к массивам, чтобы использовать богатый набор методов, а потом результат делают строкой.
Строка 121 ⟶ 122 :
[[w:Ассоциативный массив|Ассоциативные массивы]] подобны массивам [[w:Упорядоченная пара|упорядоченных пар]]. Работают они подобно словарям: фигурная скобка символизирует боковой вид на открытую книгу, а стрелка <code>=></code> покажет читателю связь каждой сущности с какой-то другой. Вторая фигурная скобка говорит, что пора закрывать книгу.
 
<spansource stylelang="color:#C71585ruby">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">"Это число улыбается!"}</spansource>}
 
Но можно и без фигурных скобок, одной стрелкой:
 
<spansource stylelang="color:#B8860Bruby">"Превед"</span><span style="color:#00008B">=></span><span style="color:#B8860B">"Медвед"</spansource>
 
Например:
 
<spansource stylelang="color:#C71585ruby">puts array</span>[<span style="color:#B8860B">"мама"</span>] <span style="color:#00008B"> #=> мыла раму</span>
puts array["807"] #=> nil
<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>
puts array[1] #=> nil
<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">#=> Медвед</spansource>
 
Ассоциативные массивы оставляют возможность хранения данных разного типа только в ассоциативном виде.
Строка 141 ⟶ 142 :
Чтобы было удобней получать подмассив или подстроку, был введён простенький тип данных — диапазон (класс <code>Range</code>). Диапазон формируется тремя элементами: начало, конец и тип протяжённости (символ <code>..</code> или <code>...</code>). Начало и конец должны быть одного типа данных (одного класса) и быть ''перечислимыми'', что значит, иметь метод <code>.succ</code>. Пример диапазонов:
 
<spansource stylelang="color:#B8860Bruby">"a".."z"</span>
<span style="color:#B8860B">"a"..."z"</span> <span style="color:#00008B"># то же, что и "a".."y"</span>
1..100
<span style="color:#006400">1..100</span>
<span style="color:#006400">1...100</span> <span style="color:#00008B"># то же, что и 1..99</spansource>
 
Диапазон-мотоцикл (<code>..</code>) проезжает от первого указанного объекта к его <code>.succ</code> (''succedent'' — «последующему»), и до последнего включительно. Три точки — то же, но мотоцикл остановился прямо перед последним элементом. Ещё раз:
 
<code>1..99</code> = <code>1...100</code>
 
Объекты, имеющие <code>.succ</code> называют [[w:Последовательность|последовательными]]: этим методом можно по текущему элементу достоверно определить следующий.
Строка 156 ⟶ 157 :
Самодельные и неабстрактные составные типы данных называются классами. Если для вас это новость, то почитайте [[Объектно-ориентированное программирование|викиучебник об объектно-ориентированном программировании]] или [[w:Объектно-ориентированное программирование|статью в Википедии]]. Вообще, в Ruby ''всё'' в конечном счёте принадлежит классу <code>Object</code>.
 
str = <spansource stylelang="color:#B8860Bruby">str = "Я - строка"</span>
str.class #=> String
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</spansource>
 
Классы можно определять и создавать по ним объекты. Внутри класса может быть много всего интересного, и у него может быть фамильное [[w:Дерево (теория графов)|дерево]], то есть классы Ruby поддерживают наследование. Однако заметим, что [[w:Множественное наследование|множественное наследование]] в Ruby не разрешается. И ещё много всего интересного можно сделать с классами и объектами. Но об этом позже.
[[Категория:Ruby|Базовые типы данных]]