在Ruby中可以使用一个范围作为散列的关键字吗?
发布时间:2020-12-16 20:24:25 所属栏目:百科 来源:网络整理
导读:我正在尝试创建一个脚本来通过索引,查看每个页面的数字,并告诉我这本书的哪一个章节.这是我在做什么的近似: @chapters = { 1 = "introduction.xhtml",2..5 = "chapter1.xhtml",6..10 = "chapter2.xhtml",11..18 = "chapter3.xhtml",19..30 = "chapter4.xhtm
我正在尝试创建一个脚本来通过索引,查看每个页面的数字,并告诉我这本书的哪一个章节.这是我在做什么的近似:
@chapters = { 1 => "introduction.xhtml",2..5 => "chapter1.xhtml",6..10 => "chapter2.xhtml",11..18 => "chapter3.xhtml",19..30 => "chapter4.xhtml" } def find_chapter(number) @chapters.each do |page_range,chapter_name| if number === page_range puts "<a href="" + chapter_name + "page" + number.to_s + "">" + number.to_s + </a>" end end end find_chapter(1)将吐出我想要的字符串,但find_chapter(15)不返回任何东西.是不是可以使用一个范围作为这样的关键? 解决方法
您可以使用Hash键的范围,您可以非常容易地使用select进行查找:
@chapters = { 1 => "introduction.xhtml",19..30 => "chapter4.xhtml" } @chapters.select {|chapter| chapter === 5 } #=> {2..5=>"chapter1.xhtml"} 如果您只想要章节名称,只需添加.values.first,如下所示: @chapters.select {|chapter| chapter === 9 }.values.first #=> "chapter2.xhtml" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |