#!/usr/bin/env ruby # "упаковываем" массив Ruby puts "\n\t Массивы " magic = [1, 2] # обе метки наклеены на одну и ту же упаковку hocusPocus = magic # их значения совпадают print "magic = "; p magic print "hocusPocus = "; p hocusPocus puts "изменяем содержимое массива hocusPocus" # изменим содержимое упаковки с именем hocusPocus hocusPocus[0] = 6 print "magic = "; p magic # посмотрим... print "hocusPocus = "; p hocusPocus puts "Обе переменные изменились" puts"===============" puts "\n \t Числа " # "упаковали" объект типа FixNum magic = 42 # теперь имеем две упаковки, каждая со своей меткой hocusPocus = magic # обе упаковки имеют одинаковое содержимое puts "magic = #{magic}" puts "hocusPocus = #{hocusPocus}" puts "изменяем содержимое hocusPocus" # изменим содержимое упаковки с именем hocusPocus hocusPocus = 0 # посмотрим... puts "magic = #{magic}" # и заметим, что они различны puts "hocusPocus = #{hocusPocus}" puts "Вторая переменная не изменилась" =begin b=[ ] puts "b=" ,b, "\n" a, b = [1, 2, 3] print "a=", a, "\t" print "b=" ,b, "\n" a, *b = [1, 2, 3] print "a=", a, "\t" print "b=" ,b, "\n" *b = [1, 2, 3] print "b=" ,b, "\n" a = Array.new(3, Array.new(3)) p a a = Array.new(3, Time) p a p a.type p a[2].type =end =begin a = [ [11, 12, 13], [21, 22, 23], [31, 32, 33] ] p a puts "Второе число второй строки равно #{a[1][1]}" # создание массива размерности 3x3 myArray = Array.new(3, Array.new(3)) #p myArray a = Array.new(3) a[0] = Array.new(3) a[1] = Array.new(3) a[2] = Array.new(3) a[1][1]=123 p a # a = (0..2).map{Array.new 3} # ПРАВИЛЬНО a[1][1]=123 p a # # создали массив, в который поместили # три ссылки на один и тот же объект b = Array.new(3, Array.new(3)) # НЕПРАВИЛЬНО b[1][1]=123 p b # a = [1, 2, 3,4] puts a[2] puts a[-1] puts a[-2] b = %w(a b c) p b p b[0] a = ["a", "b", "c", "d"] p a.collect {|i| i+"!"} b = [23, -14, 45, 78, -2.5] s = 0 b.collect {|i| s +=i} puts s =end