【问题标题】:Trying to pass a array to a method to be sorted试图将数组传递给要排序的方法
【发布时间】:2014-01-17 22:14:47
【问题描述】:

Codeacademy 实际上传递了这个代码是正确的,但是在构建 irb 时出现了这些错误。我迷路了!

错误:(ruby):1:警告:在条件中找到=,应该是== (ruby):8: 语法错误,出乎意料的keyword_end,期待$end

    def alphabetize(arr, rev=false)
    if rev = true
        arr.sort! { |item1, item2| item2 <=> item1 }
    else 
        arr.sort! { |item1, item2| item1 <=> item2 }
    end
end
    puts arr
end
alphabetize("the", "world", "is", "a", "vampire")

【问题讨论】:

    标签: ruby


    【解决方案1】:

    if rev = true 写成if rev == true(但更多的Rubyish 是if rev)。在puts arr上方还有一个额外的end,删除它。

    def alphabetize(arr, rev=false)
      if rev 
        arr.sort! { |item1, item2| item2 <=> item1 }
      else 
        arr.sort! { |item1, item2| item1 <=> item2 }
      end
    end
    
    puts alphabetize(["the", "world", "is", "a", "vampire"])
    

    【讨论】:

    • 好吧,错误地(或者你从 Codeacademy 知道这个练习)你已经回答了作者未来的问题:stackoverflow.com/q/21197448/2597260
    • @DarekNędza 我看到了...... OP 采取了其他答案,并陷入了差距...... :)
    【解决方案2】:

    正确的代码应该是这样的:

    def alphabetize(arr, rev=false)
        if rev == true
            arr.sort! { |item1, item2| item2 <=> item1 }
        else 
            arr.sort! { |item1, item2| item1 <=> item2 }
        end
        puts arr
    end
    alphabetize(["the", "world", "is", "a", "vampire"])
    

    你有多余的end,而rev==true是比较,你使用的是rev=true,这是赋值

    另一个错误是在调用方法时需要传递一个数组

    【讨论】:

      猜你喜欢
      • 2021-03-07
      • 1970-01-01
      • 2010-10-23
      • 2012-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多