跳到主要內容

top_level_cycle

型別 '{0}' 無法推斷,因為它透過迴圈依賴於自身:{1}。

描述

#

當頂級變數沒有型別註解,且該變數的初始化表示式直接或間接引用了該變數自身時,分析器會生成此診斷資訊。

示例

#

以下程式碼會生成此診斷資訊,因為變數 xy 互相定義,且都沒有顯式型別,因此無法推斷出對方的型別

dart
var x = y;
var y = x;

常見修復方法

#

如果兩個變數不需要互相引用,則打破迴圈

dart
var x = 0;
var y = x;

如果兩個變數需要互相引用,則至少給其中一個變數一個顯式型別

dart
int x = y;
var y = x;

然而請注意,雖然這段程式碼不會產生任何診斷資訊,但在執行時會產生堆疊溢位,除非在引用迴圈中的任何變數之前,至少有一個變數被賦值為一個不依賴於其他變數的值。