0

在下周的现场课程开始之前,我正在进行最后一周的准备工作,我被这个问题挂断了,我希望有人能告诉我哪里出错了。

这就是他们希望我们做的:创建一个名为 great_movies 的新哈希数组,其中仅包含评分大于 3 的电影,并且每个哈希仅包含标题和 boxart 信息。该程序应以:p great_movies 结尾。

这是我们给出的代码:

    movies = [
      {
        "id" => 70111470,
        "title" => "Die Hard",
        "boxart" => "http://cdn-0.nflximg.com/images/2891/DieHard.jpg",
        "uri" => "http://api.netflix.com/catalog/titles/movies/70111470",
        "rating" => 5.0,
        "bookmark" => []
      },
      {
        "id" => 654356453,
        "title" => "Bad Boys",
        "boxart" => "http://cdn-0.nflximg.com/images/2891/BadBoys.jpg",
        "uri" => "http://api.netflix.com/catalog/titles/movies/70111470",
        "rating" => 2.0,
        "bookmark" => [{ "id" => 432534, "time" => 65876586 }]
      },
      {
        "id" => 65432445,
        "title" => "The Chamber",
        "boxart" => "http://cdn-0.nflximg.com/images/2891/TheChamber.jpg",
        "uri" => "http://api.netflix.com/catalog/titles/movies/70111470",
        "rating" => 4.0,
        "bookmark" => []
      },
      {
        "id" => 675465,
        "title" => "Fracture",
        "boxart" => "http://cdn-0.nflximg.com/images/2891/Fracture.jpg",
        "uri" => "http://api.netflix.com/catalog/titles/movies/70111470",
        "rating" => 3.0,
        "bookmark" => [{ "id" => 432534, "time" => 65876586 }]
      }
    ]

到目前为止,这是我想出的,但我认为我的方法不对?类电影

  def initialize(id, title, boxart, url, rating, bookmark)
    @id = id
    @title = title
    @boxart = boxart
    @url = url
    @rating = rating
    @bookmark = bookmark
  end

  def id
    @id
  end

  def title
    @title
  end

  def boxart
    @boxart
  end

  def url
    @url
  end

  def rating
    @rating
  end

  def bookmark
    @bookmark
  end
end

然后我按照他们向我们展示的方式输入所有信息,但由于某种原因,它不允许我在这里发布我只是做了四个不同的 Movies.new 实例并将所有信息放入其中。

任何为我指明正确方向的帮助都将不胜感激,就像旁注一样,我们最近刚刚了解了整个类方法的事情,这就是为什么我尝试这样做的原因,因为至少在我看来,这是他们最近的事情向我们展示了我试图使用的东西。

4

1 回答 1

2

我认为创建一个全新的班级是相当过分的。您只需要了解已经可用于数组的方法。

我不会为您提供直接的解决方案,因为这是家庭作业,所以不会在这里为您做作业。但是让我们考虑一个数组:

foo = [1, 4, 8, 2, 3, 5]

我可以获得比3使用该select方法更大的值并给它一个适当的块。

greater_than_3 = foo.select { |x| x > 3 }

现在greater_than_3[4, 8, 5]

如果我想要一个包含每个这些值的数组,然后乘以 2 怎么办?我可以使用该map方法和另一个块。

greater_than_3 = foo.select { |x| x > 3 }
times_two = greater_than_3.map { |x| x * 2 }

现在times_two[8, 16, 10]

由于这是家庭作业,我会让你看看如何应用这些方法来解决你的问题,而不是直接给你一个可以复制和粘贴的答案。

为Array类提供这些方法的 Ruby Enumerable mixin的文档应该对您有所帮助。

于 2021-09-29T18:56:21.293 回答