在ruby中编写一些"学习语言"代码时,作为linkList实现的一部分,我遇到了这个警告:
在"添加"方法中,如果头部尚不存在,则创建头部,即
def add(value)
new_node=LinkedListNode.new(value)
if !@head
@head=new_node
else
self.find {|node| node.next ==nil }.next=new_node
end
end
Run Code Online (Sandbox Code Playgroud)
然后我收到警告
.../linked_list.rb:13: warning: instance variable @head not initialized
Run Code Online (Sandbox Code Playgroud)
我如何摆脱这个警告?这样做的惯用方法是什么?
Log*_*ldo 20
除了Matchu的建议,您还可以使用懒惰地defined?初始化@head,而不会引发警告:
if defined? @head
...
else
@head = new_node
end
Run Code Online (Sandbox Code Playgroud)
这种事情的正常习惯是
@head ||= new_node
Run Code Online (Sandbox Code Playgroud)
这也不会引发警告,但在这种情况下,如果@head没有定义你似乎需要做一些事情,并且它不是幂等的,因此||=在这种情况下不能很好地工作.||=还有缺点是无法区分假,零或未设置.初始化为nil初始化可能是最佳选择.
| 归档时间: |
|
| 查看次数: |
8114 次 |
| 最近记录: |