Ruby之旅(七) 數組以及Hash

來源:互聯網
上載者:User

Ruby支援數組以及Hash,數組和Hash都是通過索引訪問的,所不同的是數組通過數字索引,而Hash的索引可以是任何對象,所以數組訪問速度更快(直接定位),而Hash則更加靈活,搜尋元素速度更快(Hash演算法定位索引,無需遍曆)。

Ruby裡面比較有特點的是,數組與Hash都可以容納不同的對象,因為這是Ruby語言所決定的(非強型別語言,單根派生自Object)

數組的一個常用方法是<< 這個方法的作用是添加一個元素在數組中。

sample

class MyClass
  def to_s
    return "LeeClass"
  end
end


arr = %w[How are you.] # The same as arr = ["How", "are", "you."]
arr << "I'm" # Append a element
arr << MyClass.new

arr.each do |item|
  if item.class.to_s.upcase != "STRING"
    print "#{item}, Type:#{item.class}"
  else
    print item + " "
  end
end

# output: How are you. I'm LeeClass, Type:MyClass

 

Hash Sample

class MyClass
  def to_s
    return "hallo"
  end
end

mc = MyClass.new
hash = {
  :maozedong  =>  "laoda",
  :zhouenlai    =>  "laoer",
  :jiangjieshi    => "fool",
  mc => mc 
}


puts hash[:maozedong].class.to_s #output String
puts hash[:maozedong] #output laoda

puts hash[mc].class.to_s #output MyClass
puts hash[mc] #output hallo  because the puts method default calling to_s

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.