【问题标题】:how can I sorting strings with IF statement In RUBY如何在 RUBY 中使用 IF 语句对字符串进行排序
【发布时间】:2014-10-23 16:24:10
【问题描述】:

这是 codecademy 的测试。

"使用 .sort! 以降序(即反向)字母顺序对 fruits 数组进行排序。 您可以使用组合比较运算符(如上例)或 if/elsif/else 语句。”

他们给了这个数组

fruits = ["orange", "apple", "banana", "pear", "grapes"]

我用这段代码做到了

fruits.sort!{|i,j| j<=>i}

但无法使用“IF 语句”解决此问题。

我尝试了大约 10 个小时。

我是 RUBY 和编程方面的新手。谁能帮帮我?

【问题讨论】:

  • 10 小时?你现在是在公然撒谎是吗?
  • 我建议你去阅读有关宇宙飞船操作员的文档 (&lt;=&gt;)。如果您了解它的作用,那么使用 if/else 重新实现将是微不足道的。
  • 你了解飞船比较 (&lt;=&gt;) 运算符的工作原理吗?它返回 3 个值之一 -1,0,+1 用于排序条例。 if 语句从那里应该相当容易。
  • 您阅读过&lt;=&gt;sort 的任何文档吗?
  • @SergioTulentsev @engineersmnky @muistoshort 我知道宇宙飞船是什么意思。它返回 3 个值。而且我知道如何使用 If 语句调用它。 if i&gt;j return 1 elsif i&lt;j return -1 else return 0 不是吗?但我的问题是不知道如何使用它..

标签: ruby string sorting if-statement


【解决方案1】:

我解决了。最后。 我永远不会忘记这一点。 感谢所有评论的人。

fruits = ["orange", "apple", "banana", "pear", "grapes"]

def sorting(i,j)
  if i>j
      return -1
  elsif i<j
      return 1
  else 
      return 0
  end
end

fruits.sort!{|i,j| sorting(i,j)}

【讨论】:

    【解决方案2】:

    你可以这样试试:

    2.1.2 :065 > fruits = ["orange", "apple", "banana", "pear", "grapes"]
     => ["orange", "apple", "banana", "pear", "grapes"]
    2.1.2 :066 > fruits.sort! do |i, j|
    2.1.2 :067 >     if i > j
    2.1.2 :068?>     -1
    2.1.2 :069?>     elsif i< j
    2.1.2 :070?>     1
    2.1.2 :071?>     else
    2.1.2 :072?>     0
    2.1.2 :073?>     end
    2.1.2 :074?>   end
     => ["pear", "orange", "grapes", "banana", "apple"]
    

    【讨论】:

    • 谢谢!这对我来说似乎很棒。我想投票,但缺乏声誉。原谅我。
    • 没关系,很高兴能帮上忙。
    猜你喜欢
    • 2021-06-18
    • 2012-03-24
    • 1970-01-01
    • 1970-01-01
    • 2021-02-16
    • 2013-05-14
    • 2021-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多