【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")
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)