Dart学习--之Runes与Symbols相关方法总结

Posted lxlx1798

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dart学习--之Runes与Symbols相关方法总结相关的知识,希望对你有一定的参考价值。

一,Runes

  • 在Dart中,Runes代表字符串的UTF-32字符集, 另一种Strings
  • Unicode为每一个字符、标点符号、表情符号等都定义了 一个唯一的数值
  • 由于Dart字符串是UTF-16的字符序列,所以在字符串中表达32的字符序列就需要新的语法了
  • 通常使用\uXXXX的方式来表示, 这里的XXXX是4个16进制的数, 如,心形符号(♥)是\u2665
  • 对于非4个数值的情况,把编码值放到大括号中即可, 如,笑脸emoji (??) 是\u1f600
  • String类有一些属性可以提取rune信息
    • codeUnitAt和codeUnit属性返回16为字符
    • 使用runes属性来获取字符串的runes信息

      var clapping = \u1f44f;
      print(clapping);
      // ??
      print(clapping.codeUnits);
      // [55357, 56399]
      print(clapping.runes.toList());
      // [128079]

  • 简单使用
    •  根据字符串创建

      Runes runes = new Runes(\u2665, \u1f605, \u1f60e);
      print(runes);
      // (9829, 44, 32, 128517, 44, 32, 128526)

    • 输出特殊字符的字符串

      print(new String.fromCharCodes(runes)); // ♥, ??, ??

由于Runes也是继承于Iterable, 所以Runes中的属性和方法的使用也和Iterable一样, 详情参考Runes和Flutter开发之Dart的数据类型01中的介绍

二,Symbols

  • 一个Symbol对象代表Dart程序中声明的操作符或者标识符
  • 也许不会用到Symbol,但是该功能对于通过名字来引用标识符的情况 是非常有价值的,特别是混淆后的代码,标识符的名字被混淆了,但是Symbol的名字不会改变
  • 使用Symbol字面量来获取标识符的symbol对象,也就是在标识符前面添加一个 # 符号
  • 获取symbol 对象

    var sym1 = Symbol(name);
    print(sym1);
    // Symbol("name")

  • #号创建

    var sym2 = #titan;
    print(sym2);
    // Symbol("titan")

以上是关于Dart学习--之Runes与Symbols相关方法总结的主要内容,如果未能解决你的问题,请参考以下文章

Dart2基础

Dart学习--Dart之数组(List)的相关方法总结

Dart学习-- Dart之消息循环机制[翻译]

Dart学习--之Iterable相关方法总结

Dart 1 书籍是不是仍然与学习 Dart 2 相关?

尝鲜 Dart 2.7 最新语法之泛型强化:声明处型变