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

Ruby实现链表添加节点时出现NoMethodError错误如何解决?

问题原因

Ruby 类的实例变量默认为私有属性,不允许在类外直接进行读写操作。你定义的 Node 类仅在初始化方法中为 @data、@next 两个实例变量赋值,没有对外暴露对应的读写方法,因此在 LinkedList 类的 add 方法中执行 @head.next = temp、以及 printList 方法中读取 temp.data、temp.next 时,都会触发 NoMethodError 报错。

解决方案

在 Node 类中添加属性访问器,开放 data 和 next 两个实例变量的读写权限即可,修改后的 Node 类代码如下:

class Node
    # 开放data、next属性的读写权限
    attr_accessor :data, :next
    def initialize data
        @data = data
        @next = nil
    end
end

修改后重新运行代码,会按头插法的逻辑依次输出 3、2、1,符合当前代码的设计预期。

内容的提问来源于stack exchange,提问作者Shiv

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 16:24:03