【Dart學習】--之Runes與Symbols相關方法總結


一,Runes

  • 在Dart中,Runes代表字符串的UTF-32字符集, 另一種Strings
  • Unicode為每一個字符、標點符號、表情符號等都定義了 一個唯一的數值
  • 由於Dart字符串是UTF-16的字符序列,所以在字符串中表達32的字符序列就需要新的語法了
  • 通常使用\uXXXX的方式來表示, 這里的XXXX是4個16進制的數, 如,心形符號(♥)是\u2665
  • 對於非4個數值的情況,把編碼值放到大括號中即可, 如,笑臉emoji (😆) 是\u{1f600}
  • String類有一些屬性可以提取rune信息
    • codeUnitAt和codeUnit屬性返回16為字符
    • 使用runes屬性來獲取字符串的runes信息

      var clapping = '\u{1f44f}';
      print(clapping);
      // 👏
      print(clapping.codeUnits);
      // [55357, 56399]
      print(clapping.runes.toList());
      // [128079]

  • 簡單使用
    •  根據字符串創建

      Runes runes = new Runes('\u2665, \u{1f605}, \u{1f60e}');
      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")


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM