簡體   English   中英

堆棧級別太深(SystemStackError)—不確定為什么收到此錯誤

[英]stack level too deep (SystemStackError) — Unsure Why I get this error

我從運行整個程序的主文件中調用兩個文件,當我運行主文件main.rb時會遇到以下錯誤,即handlers.rb和core.rb。

handlers.rb:4: stack level too deep (SystemStackError)

當我運行handlers.rb時,我遇到相同的錯誤。

core.rb:6: stack level too deep (SystemStackError)

core.rb有

require 'mail'
require 'json'
load './handlers.rb'

handlers.rb有

require 'twilio-ruby'
require 'json'
load './core.rb'
require 'mail'

我不明白為什么會出現這些錯誤,有什么想法嗎? 謝謝

您正在遞歸使用load方法。 加載不像require那樣, require確實會讓您只包含一次文件,而load會使您多次包含文件。

文件core.rb和handler.rb互相引用並帶有load

“堆棧級別太深”始終表示遞歸調用。

例如:

  def foo
    foo
  end

如果在irb中調用此命令,則會得到:

SystemStackError:堆棧級別太深

在代碼中,您遞歸地加載兩個文件。 load()不喜歡那樣。 當您需要require()時,我也建議這樣做

優先決定僅一個文件應加載另一個文件,然后僅保留該一個加載,而不保留另一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM