Ruby数组排序问题:为何我的排序代码未得到正确结果?
为什么你的购物清单排序代码被判定错误?
嘿,我来帮你理清问题出在哪!先看你写的代码:
shopping_list = ["potato", "cucumber", "banana", "persimmon"] shopping_list.sort puts shopping_list
核心问题:sort方法不会修改原数组
在Ruby里,sort是非破坏性方法——它会返回一个全新的、排序后的数组,但不会改变原来的shopping_list数组。所以你调用shopping_list.sort后,原数组还是保持最初的顺序,puts shopping_list打印的自然是未排序的内容,这就是代码被判定错误的原因。
两种正确的写法
1. 使用破坏性排序方法 sort!
如果你想直接修改原数组,用带感叹号的sort!(Ruby里带感叹号的方法通常表示会修改调用对象本身):
shopping_list = ["potato", "cucumber", "banana", "persimmon"] shopping_list.sort! # 直接修改原数组 puts shopping_list # 现在打印的就是排序后的内容
2. 保存排序结果并打印
如果你不想修改原数组,可以把sort返回的新数组赋值给变量,或者直接打印返回值:
shopping_list = ["potato", "cucumber", "banana", "persimmon"] sorted_shopping_list = shopping_list.sort # 把排序后的新数组存起来 puts sorted_shopping_list # 或者更简洁的写法,直接打印排序结果 puts shopping_list.sort
这样修改后,代码就能按排序后的顺序打印出["banana", "cucumber", "persimmon", "potato"]啦!
内容的提问来源于stack exchange,提问作者Jarrod Maverick Kassels
相关产品推荐
相关产品推荐

