簡體   English   中英

檢查 dart 的主 function 內部是否啟用了斷言?

[英]Check whether assertions are enabled inside of main function in dart?

我知道為了運行啟用了斷言的文件,我必須使用--enable-asserts標志來運行它,如下所示:

dart --enable-asserts file_name.dart

如何驗證主 function 內部是否啟用了斷言,如果沒有則打印一些東西?

不確定是否有任何正確的方法可以做到這一點,但你可以像這樣“破解”一些東西:

void main() {
  if (assertEnabled()) {
    print('Asserts enabled!');
  } else {
    print('Asserts not enabled!');
  }
}

bool assertEnabled() {
  try {
    assert(false);
    return false;
  } catch (_) {
    return true;
  }
}

對於不涉及拋出和捕獲AssertionError的方法,您可以利用僅在啟用斷言時才評估的assert表達式:

void main() {
  if (assertEnabled()) {
    print('Asserts enabled!');
  } else {
    print('Asserts not enabled!');
  }
}

bool assertEnabled() {
  var result = false;
  assert(result = true);
  return result;
}

通常,您還可以創建和調用匿名 function 以僅在啟用斷言時執行任意代碼:

assert(() {
  print('Asserts enabled!');
  return true;
}());

暫無
暫無

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

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