dart:core
库中Symbol构造函数
的用法介绍如下。
用法:
const
Symbol(
String name
)
构造一个新的 Symbol 表示提供的名称。
从相等的name
字符串创建的符号本身是相等的。如果使用 const
创建符号,则具有相同 name
字符串的符号将被规范化且相同。
一些 name
字符串创建的符号也可以使用符号文字创建,或者在运行 Dart 程序时隐式创建,例如通过 Object.noSuchMethod 。
如果name
是一个不以下划线开头的单个 Dart 标识符,或者它是一个限定标识符(多个标识符由.
s),或者它是用户可定义运算符的名称,不同于unary-
(其中之一“+
", "-
", "*
", "/
", "%
", "~/
", "&
", "|
", "^
", "~
", "<<
", ">>
", ">>>
", "<
", "<=
", ">
", ">=
", "==
", "[]
“, 或者 ”[]=
"),那么结果Symbol(name)
等于通过前缀创建的符号文字#
对内容name
, 和const Symbol(name)
与该符号文字相同。那是#foo == Symbol("foo")
和identical(#foo, const Symbol("foo"))
.
如果 name
是单个标识符,不以下划线开头,后跟 =
,则该符号是一个设置器名称,并且可以等于 Object.noSuchMethod 调用中的 Invocation.memberName。
私有符号文字,如 #_foo
,不能使用符号构造函数创建。像 const Symbol("_foo")
这样的符号不等于任何符号文字,也不等于 noSuchMethod
引入的任何源名称符号。
assert(Symbol("foo") == Symbol("foo"));
assert(Symbol("foo") == #foo);
assert(identical(const Symbol("foo"), const Symbol("foo")));
assert(identical(const Symbol("foo"), #foo));
assert(Symbol("[]=") == #[]=]);
assert(identical(const Symbol("[]="), #[]=));
assert(Symbol("foo.bar") == #foo.bar);
assert(identical(const Symbol("foo.bar"), #foo.bar));
创建的实例覆盖 Object.== 。
相关用法
- Dart StreamTransformer构造函数用法及代码示例
- Dart SplayTreeSet.lookup用法及代码示例
- Dart String.replaceAll用法及代码示例
- Dart Stream.fromFutures用法及代码示例
- Dart StreamController用法及代码示例
- Dart StringList.first用法及代码示例
- Dart Stream.fold用法及代码示例
- Dart SetMixin.forEach用法及代码示例
- Dart SetMixin.addAll用法及代码示例
- Dart Stream.map用法及代码示例
- Dart String.fromCharCodes用法及代码示例
- Dart Set.removeWhere用法及代码示例
- Dart Set.from用法及代码示例
- Dart StreamSubscription用法及代码示例
- Dart SplayTreeMap.from用法及代码示例
- Dart SetMixin.reduce用法及代码示例
- Dart String.trim用法及代码示例
- Dart Set.remove用法及代码示例
- Dart Set.retainAll用法及代码示例
- Dart String.lastIndexOf用法及代码示例
- Dart SourceBufferList.first用法及代码示例
- Dart String.replaceRange用法及代码示例
- Dart StringList.length用法及代码示例
- Dart SetMixin.removeAll用法及代码示例
- Dart SetMixin.add用法及代码示例
注:本文由纯净天空筛选整理自dart.dev大神的英文原创作品 Symbol constructor。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。