Ruby 未调用嵌套类初始化

Ruby 未调用嵌套类初始化,ruby,Ruby,我正在创建一个自定义Trie,如下所示: #冻结的字符串文字:true 类CustomTrie 属性存取器:trie def初始化(项目) 结束 定义self.parse_to_trie(项目) 结束 def get(路径) 结束 类节点 属性访问器:键,:父项,:子项, def初始化(项:“”,父项:nil,子项:[]) #这没人叫,为什么? @钥匙 @父=父 @儿童=儿童 结束 def是您的家长吗? 结束 def是你的叶子吗? 结束 def检查 {key:@key,parent:@paren

我正在创建一个自定义Trie,如下所示:

#冻结的字符串文字:true
类CustomTrie
属性存取器:trie
def初始化(项目)
结束
定义self.parse_to_trie(项目)
结束
def get(路径)
结束
类节点
属性访问器:键,:父项,:子项,
def初始化(项:“”,父项:nil,子项:[])
#这没人叫,为什么?
@钥匙
@父=父
@儿童=儿童
结束
def是您的家长吗?
结束
def是你的叶子吗?
结束
def检查
{key:@key,parent:@parent,children:@children}
结束
结束
三类
属性存取器:根
def初始化(root=Node.new)
@根=根
结束
def添加(路径)
结束
def get(路径)
结束
结束
结束
但是,当我尝试调用
CustomTrie::Node.new
时,所有内容都初始化为nil而不是默认值,并且当我尝试使用值调用构造函数时,我得到错误:“ArgumentError(参数数量错误(给定x,预期为0))”

我确信我遗漏了一些明显的东西,但我无法确定我做错了什么。

:facepalm:


原来这是因为在我的
attr\u accessor
调用中,在
:children
之后有一个逗号。

允许使用尾随逗号,但是应该使用括号调用方法调用,以指示停止参数列表的位置<例如,代码>属性访问器(:key,:parent,:children,)应该可以工作。在没有括号的情况下,它定义了
initialize
方法,返回符号
:initialize
,然后将其用作
属性访问器的下一个参数。其行为与
def initialize。。。;结束;attr\u访问器:初始化
使用从
attr\u访问器
生成的getter重新定义初始值设定项。