• 数组
  • Ruby array

    数组

    a=[]
    b=Array.new
    irb(main):001:0> c =Array.new(3)
    => [nil, nil, nil]
    irb(main):002:0> c =Array.new(3,2)
    => [2, 2, 2]
    
    #方法一
    #注意,这里每个元素都只是引用而已,是同一份,如果要创建不同的,用下面的第二种方法
    irb(main):005:0> d = Array.new(3,'abc')
    => ["abc", "abc", "abc"]
    irb(main):006:0> d[0][0]='d'
    => "d"
    irb(main):007:0> d
    => ["dbc", "dbc", "dbc"]
    # 方法二
    irb(main):008:0> e = Array.new(3){'abc'}
    => ["abc", "abc", "abc"]
    irb(main):009:0> e[0][0]='e'
    => "e"
    irb(main):010:0> e
    => ["ebc", "abc", "abc"]
    # 定义字符串Array
    %w
    irb(main):015:0> arr=%w(a b c) # 注意不要加逗号,否则会只有一个元素
    => ["a", "b", "c"]
    

    方法

    irb(main):012:0> arr=%w(a,b,c)
    => ["a,b,c"]
    irb(main):013:0> arr[0]
    => "a,b,c"
    irb(main):014:0> arr.fetch(0)
    => "a,b,c"
    irb(main):015:0> arr=%w(a b c)
    => ["a", "b", "c"]
    irb(main):016:0> arr[0]
    => "a"
    irb(main):017:0> arr.fetch(0)
    => "a"
    irb(main):018:0> arr.fetch(5,'default') # 获取get
    => "default"
    irb(main):019:0> arr.include?('c') # 是否包含
    => true
    irb(main):020:0> arr.empty? # 是否为空
    => false
    irb(main):021:0> arr.push('end') # 追加
    => ["a", "b", "c", "end"]
    irb(main):022:0> arr[8]='eight'
    => "eight"
    irb(main):023:0> arr
    => ["a", "b", "c", "end", nil, nil, nil, nil, "eight"]
    irb(main):024:0> arr.delete_at(5) # 按索引位置删除
    => nil
    irb(main):025:0> arr
    => ["a", "b", "c", "end", nil, nil, nil, "eight"]
    irb(main):026:0> arr.delete(nil) # 删除某个值,有多个会删除多个
    => nil
    irb(main):027:0> arr
    => ["a", "b", "c", "end", "eight"]
    irb(main):028:0> arr.push('eight') # 追加
    => ["a", "b", "c", "end", "eight", "eight"]
    irb(main):029:0> arr.uniq # 去重
    => ["a", "b", "c", "end", "eight"]
    irb(main):030:0> arr.shuffle # 随机
    => ["a", "eight", "end", "b", "c", "eight"]
    irb(main):031:0> arr=['a',[1,2],[3,4]]
    => ["a", [1, 2], [3, 4]]
    irb(main):032:0> arr.flatten # 打散
    => ["a", 1, 2, 3, 4]
    
    irb(main):033:0> arr.each{|e| p e} # 正序
    "a"
    [1, 2]
    [3, 4]
    irb(main):034:0> arr.reverse_each{|e| p e} # 逆序
    [3, 4]
    [1, 2]
    "a"
    
    irb(main):036:0> arr.each_with_index{|e,i| p [i,e]} # 打印带索引
    [0, "a"]
    [1, [1, 2]]
    [2, [3, 4]]
    
    irb(main):038:0> arr=[1,-1,2,3,-4]
    => [1, -1, 2, 3, -4]
    irb(main):039:0> arr.sort # 排序
    => [-4, -1, 1, 2, 3]
    irb(main):040:0> arr.select{|e| e>0} # 按条件选择
    => [1, 2, 3]
    irb(main):041:0> arr << nil  # 追加nil
    => [1, -1, 2, 3, -4, nil]
    irb(main):042:0> arr.compact # 去掉nil
    => [1, -1, 2, 3, -4]
    
    irb(main):043:0> arr.any?{|e| e<0} # 是否有小于0的值
    => true
    

    上一篇:Ruby mixin

    下一篇:Ruby hash