在我的 Flutter 應用程式中,我想構建這個函式:
bool isValidType(element, Type cls) {
return element is cls;
}
這個問題是:The name 'cls' isn't a type and can't be used in an 'is' expression. Try correcting the name to match an existing type. dart(type_test_with_non_type)
element
是動態的,但我希望它是擴展類的類的物件Element
(如class Node extends Element
)。我希望能夠使用此功能的方式是:
isValidType(node, Node) -> true
isValidType(node, Element) -> true
我首先認為我可以這樣做:
bool isValidType(element, Type cls) {
return element.runtimeType == cls;
}
但問題在于,對于上面提供的示例,它回傳以下內容:
isValidType(node, Node) -> true
isValidType(node, Element) -> false
原因當然是runtimeType
of node
isNode
和 not Element
。
為了滿足我的要求,我必須對首先提供的功能進行哪些更改?
uj5u.com熱心網友回復:
目前,您對物件無能為力Type
。一般建議是避免使用它們。
在您的情況下,如果您想檢查編譯時已知的型別,您可以創建isValidType
一個通用函式:
bool isValidType<T>(dynamic element) => element is T;
然后使用isValidType<Node>(node)
or isValidType<Element>(node)
。但是,我認為這樣的功能不會增加任何東西,因此您不妨在呼叫點替換isValidType<Node>(Node)
為node is Node
。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/533173.html
標籤:扑镖