【Dart学习】–之Runes与Symbols相关方法总结「建议收藏」

【Dart学习】–之Runes与Symbols相关方法总结「建议收藏」一,Runes在Dart中,Runes代表字符串的UTF-32字符集,另一种StringsUnicode为每一个字符、标点符号、表情符号等都定义了一个唯一的数值由于Dart字符串是UTF-1

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

一,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”)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/166385.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • redis和zk实现分布式锁有什么区别_redis分布式锁和zk分布式锁区别

    redis和zk实现分布式锁有什么区别_redis分布式锁和zk分布式锁区别前言本文介绍下分布式锁的一个使用场景分享本文的缘由是因为今天在写代码时需要处理一个原子性问题,场景是:业务功能需要先查询数据,再根据数据判断是否要更新数据,在这个查询+更新的过程必然会存在高并发下的原子性问题那么如何解决这个问题呢,那么就要说到我们的主角:分布式锁了分布式锁介绍分布式锁:即在多集群多节点环境下确保只有一个线程可以拿到锁,防止并发出现的问题,类似于synchronized,只不过synchronized不能处理多节点的问题解决上述问题的一种解决方式就是使用分布式锁,虽然性能会比较低

    2022年9月7日
    2
  • java面试葵花宝典[通俗易懂]

    java面试葵花宝典[通俗易懂]15年毕业到现在也近四年了,最近面试了阿里集团(菜鸟网络,蚂蚁金服),网易,滴滴,点我达,最终收到点我达,网易offer,蚂蚁金服二面挂掉,菜鸟网络一个月了还在流程中,最终有幸去了网易。但是要特别感谢点我达的领导及HR,真的非常非常好,很感谢他们一直的关照和指导。回家后,我对这次面试经历,做了总结,希望对想要跳槽的朋友们有个借鉴。面试整体事项1.简历要准备好,联系方式一定要正确清晰醒目,…

    2022年7月8日
    20
  • 《5》CentOS7.0+OpenStack+kvm云平台的部署—组态Horizon[通俗易懂]

    《5》CentOS7.0+OpenStack+kvm云平台的部署—组态Horizon

    2022年1月18日
    48
  • 是在传统pc的路上走呢,还是跟潮流走移动互联网「建议收藏」

    这些天在准备期末考试,复习c++,可是总是对手机应用的开发感兴趣,往java方向发展可能前途更好么?以我目前接触的信息来看,貌似java语言更受欢迎,而且照现在的趋势发展,手机这种移动终端的发展应该是以后一段时间的趋势,前几天看到一个关于c++的帖子,说以后c++的程序员会两极分化,学得很好的会找到很好的工作,高新,而学的一般的,全都找不到工作。大意是这样,看了很没有信心,现在全校有一半的专业都在

    2022年3月8日
    51
  • MySQL中concat函数

    MySQL中concat函数

    2021年9月18日
    58
  • PyQt5高级界面控件之QTableWidget(四)

    PyQt5高级界面控件之QTableWidget(四)QTableWidget前言QTableWidget是Qt程序中常用的显示数据表格的控件,类似于c#中的DataGrid。QTableWidget是QTableView的子类,它使用标准的数据模型,并且其单元数据是通过QTableWidgetItem对象来实现的,使用QTableWidget时就需要QTableWidgetItem。用来表示表格中的一个单元格,整个表格就是用各个单元格构建起…

    2022年5月3日
    48

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号