Groovy的pop()方法为何移除列表首元素而非尾元素?
问题结论
这不是功能bug,是对Groovy列表pop()方法的行为存在认知偏差。
具体说明
Groovy为列表扩展的pop()方法遵循栈操作逻辑,但默认将列表第一个元素作为栈顶:
- 调用
pop()会移除并返回列表的第一个元素,和你实际运行观测到的结果完全一致 - 如果你需要移除列表的最后一个元素,不要用
pop(),应该调用removeLast()方法
可复现的验证代码
def primes = [25,3,5,7,11,13] // pop() 移除第一个元素 def popResult = primes.pop() println popResult // 输出 25 println primes // 输出 [3, 5, 7, 11, 13] // 移除最后一个元素使用removeLast() def removeLastResult = primes.removeLast() println removeLastResult // 输出 13 println primes // 输出 [3, 5, 7, 11]
你之前看到的“pop()移除最后一个元素”的描述,通常是Python等其他编程语言的列表方法行为,不同语言的API设计逻辑存在差异,不要直接跨语言套用方法规则。
内容的提问来源于stack exchange,提问作者dhanush shetty
相关产品推荐
相关产品推荐

