在Ruby中可以使用一个范围作为散列的关键字吗?

前端之家收集整理的这篇文章主要介绍了在Ruby中可以使用一个范围作为散列的关键字吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试创建一个脚本来通过索引,查看每个页面的数字,并告诉我这本书的哪一个章节.这是我在做什么的近似:
  1. @chapters = {
  2. 1 => "introduction.xhtml",2..5 => "chapter1.xhtml",6..10 => "chapter2.xhtml",11..18 => "chapter3.xhtml",19..30 => "chapter4.xhtml" }
  3.  
  4. def find_chapter(number)
  5. @chapters.each do |page_range,chapter_name|
  6. if number === page_range
  7. puts "<a href=\"" + chapter_name + "\page" + number.to_s + "\">" + number.to_s + </a>"
  8. end
  9. end
  10. end

find_chapter(1)将吐出我想要的字符串,但find_chapter(15)不返回任何东西.是不是可以使用一个范围作为这样的关键?

解决方法

您可以使用Hash键的范围,您可以非常容易地使用select进行查找:
  1. @chapters = { 1 => "introduction.xhtml",19..30 => "chapter4.xhtml" }
  2.  
  3. @chapters.select {|chapter| chapter === 5 }
  4. #=> {2..5=>"chapter1.xhtml"}

如果您只想要章节名称,只需添加.values.first,如下所示:

  1. @chapters.select {|chapter| chapter === 9 }.values.first
  2. #=> "chapter2.xhtml"

猜你在找的Ruby相关文章