大饼说汽车
新浪微博
微信
当前位置:大饼说汽车网 » 周公

dart2学习笔记(8)-dart的Runes,Symbols

Runes(符号文字)

在Dart中,符文是UTF-32的字符串。

Unicode为世界上所有书写系统中使用的每个字母,数字和符号定义唯一的数值。由于Dart字符串是UTF-16代码单元的序列,因此在字符串中表示32位Unicode值需要特殊语法。表达Unicode代码点的常用方法是\ uXXXX,其中XXXX是4位十六进制值。例如,心脏角色(♥)是\ u2665。要指定多于或少于4个十六进制数字,请将值放在大括号中。例如,笑的表情符号(????)是\ u {1f600}。String类有几个属性可用于提取符文信息。codeUnitAt和codeUnit属性返回16位代码单元。使用runes属性获取字符串的符文。以下示例说明了符文,16位代码单元和32位代码点之间的关系。单击“运行”按钮以查看运行中的符文。

var clapping = '\u{1f44f}';
print(clapping);  // ????
print(clapping.codeUnits); // [55357, 56399]
print(clapping.runes.toList()); //[128079]
Runes input = new Runes(
'\u2665  \u{1f605}  \u{1f60e}  \u{1f47b}  \u{1f596}  \u{1f44d}');
print(new String.fromCharCodes(input)); // ♥  ????  ????  ????  ????  ????

注意:使用列表操作操作符文时要小心。这种方法很容易分解,具体取决于特定的语言,字符集和操作。有关更多信息,请参阅如何在Dart中反转字符串。


Symbols(标志)

Symbol对象表示Dart程序中声明的运算符或标识符。

您可能永远不需要使用符号,但它们对于按名称引用标识符的API非常有用,因为缩小会更改标识符名称而不会更改标识符符号。要获取标识符的符号,请使用符号文字,它只是#后跟标识符:

#radix
#bar

Symbols是编译时常量。