You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:59:49