【问题标题】:Greatest value from an array of numbers (Ruby) [duplicate]数字数组中的最大值(Ruby)[重复]
【发布时间】:2019-09-03 18:00:00
【问题描述】:

我目前正在学习 Ruby,为了我的生活,我找不到解决方案:

从一个数字数组中返回最大值。

输入:[5, 17, -4, 20, 12] 输出:20

谁能帮我解决这个问题并解释他们为什么使用他们的解决方案?

谢谢。

【问题讨论】:

  • 最好阅读涵盖这些类型的教程。
  • 你试过什么?您遇到问题的代码是什么?你的代码有什么问题?您收到错误消息吗?错误信息是什么?你得到的结果不是你期望的结果吗?你期望什么结果,为什么,你得到的结果是什么,两者有什么不同?您正在观察的行为不是期望的行为吗?期望的行为是什么,为什么,观察到的行为是什么,它们有何不同?请提供minimal reproducible example

标签: ruby ruby-on-rails-3


【解决方案1】:

这是从数组中删除字符并找到最大值的方法。

[1,2,3,-4,'a'].map(&:to_i).max

【讨论】:

    【解决方案2】:

    只需使用Array#max

    [5, 17, -4, 20, 12].max # => 20
    

    如果您学习并想手动查找,可以使用循环。

    例如

    max_value = -Float::INFINITY
    
    for item in [5, 17, -4, 20, 12] do
      max_value = item if item > max_value
    end
    
    max_value # => 20
    

    在此循环中,您将一一检查数组的所有元素,并将值 max_value 分配给当前最大值。

    但在 Ruby 中,最好使用 each 来实现此目的

    max_value = -Float::INFINITY
    
    [5, 17, -4, 20, 12].each { |item| max_value = item if item > max_value }
    
    max_value # => 20
    

    例如,即使作为一个想法,这就是方法

    [5, 17, -4, 20, 12].sort.last # => 20
    

    正如你所理解的,EnumerableArray 方法。在 Ruby 中,它是一个非常强大的工具。

    【讨论】:

    • 你疯了吗?您正在教 Ruby 新手使用 for 循环!
    • @CarySwoveland,你为什么这么生气?这只是示例 :) 我添加了 each
    • 可能是因为在任何代码审查中,Ruby 专家都会说“将这个 for 循环重写为其他任何东西。”我们不喜欢他们。我们不使用它们。我们不会教刚接触该语言的人使用它们。有更好的解决方案。
    猜你喜欢
    • 1970-01-01
    • 2017-12-20
    • 2016-08-24
    • 2018-05-21
    • 2018-09-20
    • 2021-06-12
    • 1970-01-01
    • 2020-03-10
    • 2022-01-09
    相关资源
    最近更新 更多