dart:core
庫中Object.noSuchMethod
方法的用法介紹如下。
用法:
dynamic noSuchMethod(
Invocation invocation
)
在訪問不存在的方法或屬性時調用。
動態成員調用可以嘗試調用接收對象上不存在的成員。例子:
dynamic object = 1;
object.add(42); // Statically allowed, run-time error
此無效代碼將調用整數1
的noSuchMethod
方法,其中Invocation 表示.add(42)
調用和參數(然後拋出)。
類可以覆蓋 noSuchMethod 以為此類無效動態調用提供自定義行為。
具有非默認 noSuchMethod 調用的類也可以省略其接口成員的實現。例子:
class MockList<T> implements List<T> {
noSuchMethod(Invocation invocation) {
log(invocation);
super.noSuchMethod(invocation); // Will throw.
}
}
void main() {
MockList().add(42);
}
即使MockList
類沒有任何List
接口方法的具體實現,此代碼也沒有編譯時警告或錯誤。對 List
方法的調用被轉發到 noSuchMethod
,因此此代碼將 log
調用類似於 Invocation.method(#add, [42])
然後拋出。
如果從 noSuchMethod
返回一個值,它將成為原始調用的結果。如果值不是原始調用可以返回的類型,則調用時會發生類型錯誤。
默認行為是拋出 NoSuchMethodError 。
相關用法
- Dart Object.hashAllUnordered用法及代碼示例
- Dart Object.hashAll用法及代碼示例
- Dart Object.hash用法及代碼示例
- Dart ObjectStore.openCursor用法及代碼示例
- Dart ObjectMirror.delegate用法及代碼示例
- Dart MapMixin.containsKey用法及代碼示例
- Dart Iterator用法及代碼示例
- Dart AttributeClassSet.intersection用法及代碼示例
- Dart num.sign用法及代碼示例
- Dart TransformList.last用法及代碼示例
- Dart FileList.first用法及代碼示例
- Dart CanvasRenderingContext2D.drawImageScaledFromSource用法及代碼示例
- Dart FileList.length用法及代碼示例
- Dart Iterable.takeWhile用法及代碼示例
- Dart LinkedHashMap用法及代碼示例
- Dart RegExp.pattern用法及代碼示例
- Dart StreamTransformer構造函數用法及代碼示例
- Dart JsArray.removeAt用法及代碼示例
- Dart ListMixin.expand用法及代碼示例
- Dart UriData.parse用法及代碼示例
- Dart Point用法及代碼示例
- Dart Int32x4List.view用法及代碼示例
- Dart Uri.decodeFull用法及代碼示例
- Dart Future用法及代碼示例
- Dart File用法及代碼示例
注:本文由純淨天空篩選整理自dart.dev大神的英文原創作品 noSuchMethod method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。