ruby base之类型
1 Array
Array也称作数组,是一系列元素的有序集合。你可以显式使用Array类的new方法来创建一个数组对象,你也可以用方括号包围起来一些以逗号分隔的数字或字符串构成一个数组。
数组可以使用 [] 来索引,其实 [] 是Array类的一个方法,它甚至可以被子类覆盖(overridden)。Ruby中比较有趣的是有多种对数组的索引方法,你可以用负数来索引数组。负数表示从尾部开始,例如索引为-1表示最后一个元素,索引为-2表示倒数第二个元素,以此类推。
你也可以使用一对数来索引数组,第一个数表示开始位置,第二数表示从开始位置起的元素数目。
你甚至可以用一个范围来索引数组,.. 表示包含尾部元素,... 表示不包含尾部元素。
slice方法很简单就像是[ ]方法的别名:
x = [0, 2, 4, 6, 8, 10, 12]a = x.slice(2) # 4b = x.slice(2,4) # [4, 6, 8, 10]c = x.slice(2..4) # [4, 6, 8]
a = [ "q", "r", "s", "t" ]a.first #=> "q"a.first(1) #=> ["q"]a.first(3) #=> ["q", "r", "s"]
array = ["Bear", "Benford", "Egan"]p array.map{|name| "G. #{name}" }# "G.Bear"# "G.Benford"# "G.Egan"array = ["73", "2", "5", "1999", "53"]# デフォルトの文字列ソート(辞書式)p array.sort #=> ["1999", "2", "5", "53", "73"]# 数値に変換してから比較してソートp array.sort{|x, y| x.to_i <=> y.to_i} #=> ["2", "5", "53", "73", "1999"]array.each_with_index do |item,index|p [item,index]end#["2",0]#["5",1]#["53",2]#["73",3]#["1999",4]irb(main):001:0> 16=> 16irb(main):002:0> 020#8进制=> 16irb(main):003:0> 0x10#16进制=> 16irb(main):004:0> 0b10000#二进制=> 16
irb(main):005:0> 123_456_789=> 123456789
string = <<END_OF_STRINGWith publication started in June 1948 and a current circulation of 3 million,People's Daily is the most influential and authoritative newspaper in China.According to UNESCO, it takes its place among the world top 10.END_OF_STRING
irb(main):003:0> (1..10).to_a=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]irb(main):004:0> ('bar'..'bat').to_a=> ["bar", "bas", "bat"]irb(main):005:0> (1...10).to_a=> [1, 2, 3, 4, 5, 6, 7, 8, 9]a = [0, 1, 2, 3, 4, 5, 6]a.each do |i| print i, " " if i == 1 .. i == 5end1 2 3 4 5 => [0, 1, 2, 3, 4, 5, 6]irb(main):026:0> a.each do |i|irb(main):027:1* puts i, " " if i == 1 .. i == 5irb(main):028:1> end12345
irb(main):093:0> (1..10) === 3=> trueirb(main):094:0> (1..10) === 30=> falseirb(main):095:0> (1..10) === 2.71828=> trueirb(main):096:0> ('a'..'f') == 'c'=> falseirb(main):097:0> ('a'..'f') == 'g'=> falsescore = 98case scorewhen 85..100 then puts "A"when 70...85 then puts "B"when 60...70 then puts "C"else puts "D"end执行结果为:A
module One class Test end $f1 = :Testend=> :Testmodule Two Test = 1 $f2 = :Testend=> :Testdef Test()end=> nil$f3 = :Test()=> :Test$f1.object_id=> 4$f2.object_id=> 4$f3.object_id=> 4
irb(main):103:0> a = /\s*[a-f]/=> /\s*[a-f]/irb(main):104:0> a.class=> Regexpirb(main):105:0> b = %r{\s*[a-f]}=> /\s*[a-f]/irb(main):106:0> b.class=> Regexpirb(main):107:0> c = Regexp.new('\s*[a-f]')=> /\s*[a-f]/irb(main):108:0> c.class=> Regexpirb(main):113:0> sentence = "This is a dog."=> "This is a dog."irb(main):114:0> sentence =~ /dog/=> 10irb(main):115:0> sentence =~ /a/=> 8irb(main):116:0> /a/ =~ sentence=> 8irb(main):117:0> sentence !~ /xyz/=> true
irb(main):118:0> sentence = "This is a dog."=> "This is a dog."irb(main):119:0> sentence =~ /a/=> 8irb(main):120:0> puts $&a=> nilirb(main):121:0> puts $'dog.=> nilirb(main):122:0> puts $`This is=> nil