ruby - 从类外部访问实例变量
问题描述
我在理解这种封装时遇到问题。我有用 attr_accessor 定义的实例变量。我正在尝试在课外访问它们。但它们总是 nil 并返回未定义的方法。
NoMethodError:未定义的方法“has_key?” 对于零:NilClass
请帮我理解。
class TrieNode
attr_reader :value, :next, :children
def initalize
@value = nil
@children = Hash.new
@next = nil
end
end
class Trie
attr_accessor :root
def initialize
@root = TrieNode.new
end
def build_trie(strs)
cur = @root
strs.each do |str|
str.chars.each do |char|
if cur.children.has_key? char
cur = cur.children[char]
next
else
new_node = TrieNode.new
cur.children[char] = new_node
cur = new_node
end
end
cur = @root
end
end
end
解决方案
是的,不是封装,是因为你的对象没有正确实例化,是错字造成的
def initalize
@value = nil
@children = Hash.new
@next = nil
end
initialize
不应该initalize
推荐阅读
- react-native - 使用 React Navigation 的动态路由
- python - 如何使用 pyspark 解析 xml 文件并将其转换为数据框?
- excel - 如何仅使用 VBA 在一张纸上将多个范围导出为 PDF
- javascript - 如果用户两次选择相同的项目,ReactJS 语义 UI 下拉菜单不会触发
- firebase - 如果使用默认服务帐户,如何在 Firebase 中覆盖 Google Cloud 项目?(去管理员 SDK)
- android - 反应本机获取抛出异常网络请求在android上失败
- laravel - 简单的 Laravel Passeport 路由测试
- syntax - 为什么使用 ODE 系统在八度音阶中给出语法错误
- dialogflow-es - 使用 Google 转录短音频的问题(是,否)
- c# - 从 excel 文件中替换无效的 XML 字符并将其写回磁盘会导致文件在 MS Excel 中打开时出现损坏错误