代码学院的错误:哦,再试一次看起来您的方法在没有接收到第二个参数时并没有默认按字母顺序排列数组。
def alphabetize(arr, rev=false)
if rev == true
arr.sort! { |item1, item2| item2 <=> item1 }
else
arr.sort!
end
puts arr
end
alphabetize(["a", "b", "c", "d", "e"])
编辑:
以下是本节的目标(抱歉,最初没有包括在内):
1)在方法中添加if/else语句如果rev是真的
应该按字母倒序排列数组;如果rev为false
如果用户传递false或不传递rev的参数,则发生
它应该按字母顺序对数组进行排序。
2)在方法外部,放置排序数组(这是为了让你能看到
你的方法做的一切都很好。)
3)在您选择的数组中调用您的方法,以查看它的运行情况!
最佳答案
2)在方法外部,放置排序数组。
不是在里面,像你一样。puts arr
返回nil,codecademy希望数组作为返回值在外部,您应该puts
此方法的外部返回值:
def alphabetize(arr, rev=false)
if rev == true
arr.sort! { |item1, item2| item2 <=> item1 }
else
arr.sort!
end
arr
end
puts alphabetize(["a", "b", "c", "d", "e"])
另外,正如韦恩·康拉德在评论中指出的那样,
sort!
修改数组。arr1=[2,3,1,5,22]
# => [2, 3, 1, 5, 22]
alphabetize arr1
# => [1, 2, 3, 5, 22]
arr1
# => [1, 2, 3, 5, 22] # you didn't want this array changed, right?
如果不想改变数组,应该使用不改变数组的normal
sort
。!
也称为bang suggest dangerous method,在这种情况下它修改数组。关于ruby - 代码学院在这里错了吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21197448/