ruby基本方法练习代码,索引

时间:2014-07-08 19:44:41

标签: ruby

我正在进行以下代码练习。我对Ruby很新,并且一直坚持让最后一个方法工作。目前,除了“def page_index”之外,每种方法都可以使用测试代码。我在这里错过了什么吗?我似乎无法确定我在这部分做错了什么。任何帮助/指导表示赞赏!我还想指出,我删除了所有其他测试代码,并且只是该方法的部分当前不起作用。

代码是作为练习的一部分提供给我们的,我们被告知修复代码以使其与底部提供的测试代码一起运行。对于我遇到问题的方法,说明是:page_index获取项索引并返回它所属的页面,它确定项目所在的页面,基于零的索引,此方法应返回-1表示item_index值超出范围。

    class PaginationHelper

    attr_accessor :collection, :items_per_page

    def initialize(collection, items_per_page)
        @collection = collection
        @items_per_page = items_per_page
    end

    def item_count
        puts @collection.length
    end

    def page_count
        puts @collection.length - items_per_page
    end


    def page_item_count(page_index)
        page_item_count = @items_per_page - page_index
        if page_index >= 2
            puts -1, "Page is invalid."
        else 
            puts (@items_per_page - page_index)
        end
    end

    def page_index(index)
        index = @collection - item_index.to_i
        if page_index >= 2
            puts -1, "Page is out of range"
        else 
            puts (@collection-index.to_i)
        end
    end
end


helper = PaginationHelper.new(['a','b','c','d','e','f'], 4)


helper.page_index(5) 
helper.page_index(2) 
helper.page_index(20) 
helper.page_index(-10) 

1 个答案:

答案 0 :(得分:2)

我想以下代码就是你要找的:

class PaginationHelper
  attr_accessor :collection, :items_per_page

  def initialize(collection, items_per_page)
    @collection = collection
    @items_per_page = items_per_page
  end

  def item_count
    puts @collection.length
  end

  def page_count
    puts @collection.length - items_per_page
  end

  def page_item_count(page_index)
    page_item_count = @items_per_page - page_index
    if page_index >= 2
      puts -1, "Page is invalid."
    else 
      puts (@items_per_page - page_index)
    end
  end

  def page_index(item_index)
    index = @collection.length - item_index
    if index <= 0 || item_index < 0
      puts "-1\tPage is out of range"
    else 
      puts (item_index / items_per_page).to_i
    end
  end
end

helper = PaginationHelper.new(['a','b','c','d','e','f'], 4)

helper.page_index(5) 
helper.page_index(2) 
helper.page_index(20) 
helper.page_index(-10)