dart之旅(二)- 内建类型
目录
像大多数语言一样,dart 也提供了 number,string,boolean 等类型,包括以下几种:
- numbers
- strings
- booleans
- lists (also known as arrays)
- maps
- runes (for expressing Unicode characters in a string)
- symbols
这几种内建类型的特点之一是你可以使用字面量来创建一个相应的对象。你也可以使用构造函数来初始化这些对象,除了 number 和 boolean,因为这两个类型没有对应的构造函数。
number 类型
number 类型包含 int 和 float 类型,int 在 dart 的 VM 环境下,取值范围在 - 263 到 263-1 之间。如果需要转为 js,范围为 js 的范围,-253 到 253-1。代码示例如下:
import 'dart:math';
main(List<String> args) {
int a = 2;
int a1 = 2.0; // 报错
double b = 2.0;
double b1 = 2; //dart2.1 会自动转换,之前的版本会报错
var c = 0x111; // 支持 16 进制表示
print(pow(2, 65)); // 打印出 0 超出数字范围
}
将数字转换为字符串可以使用数字的 toString 方法,将字符串转换为数字可以使用字符串的 parse 方法。这点和 js 相比,js 借助隐式类型转换可以更灵活的转换数字和字符串。
// 数字转字符串
print(2.toString());
print(2.5333.toString());
print(2.5333.toStringAsFixed(2));//2.50 保留几位小数
print(2.5333.toStringAsExponential(2));// 科学计数法
print(2.5333.toStringAsPrecision(8));//2.5333000
// 字符串转数字
print(int.parse('1'));
print(double.parse('2'));
在运算上,数字支持常用的四则运算,此外 dart 提供了一个 math 包来支持更复杂的运算。
字符串
在语法上,dart 的字符串的字面量语法和 python 的语法更为接近,比如可以选择使用单引号和双引号,或者使用三个双引号表示多行字符串。以下都是合法的字符串表示形式:
var s1 = 'hhh';
var s2 = "'11'";
var s3 = '111'
"222";
var s4 = """222
333
2222""";
除了字面量语法,你还可以使用以下构造函数来生成一个字符串:
String.fromCharCode(65);//A
String.fromCharCodes();//"A-!"
在字符串的方法上,与 js 的字符串很类似,甚至部分代码可以直接拷到 js 中执行。下面是关于 dart 字符串方法的一个例子,更详细的文档可以看 这里
// 长度
'1234'.length; //4
// 取子串
'1234'.substring(1,2);
// 取 unicode 值
print('123456'.codeUnitAt(1)); //js 中的 charCodeAt()
// 判断某个字符串是不是以某子串开始或结束
'123456⚠️'.startsWith('12'); //js 相同
'123456⚠️'.endsWith('⚠️'); //js 相同
// replace
'112'.replaceAll('1', 'x');// 'xx2' 全部替换
'112'.replaceFirst('1', 'x');// 'x12' 只替换第一个
//split
print('1234561'.split('3')); // 同 js
// trim,trimLeft,trimRight 修剪两边,左边,右边的空格,同 js
print('1234561'.trim());
//contains
print('1234561'.contains('8')); //false 判断字符串是否包含某个子串
// indexOf,lastIndexOf, 获取某个字串第一次出现和最后出现的位置。同 js,没有返回 - 1
print('1234561'.indexOf('9'));// -1
// padLeft,padRight 同 js 的 padStart 和 padEnd
print('1234561'.padLeft(9, '0'));//001234561
print('1234561'.padEnd(9, '0'));//123456100
// toUpperCase,toLowerCase 同 js
print('x'.toUpperCase());
print('X'.toLowerCase());
dart也支持模板字符串,使用方法和js的基本相同,但是当你要放入模板字符串的是一个变量时,甚至可以省略花括号,如下面的$string所示:
string = 'dartlang';
'$string has ${string.length} letters'; // 'dartlang has 8 letters'
字符串全部的方法可以参考api文档。
布尔类型有两种值,true 和false。值得注意的是,由于dart是一种类型安全的语言,没有js中的隐式转换,你不能写!0这样的代码,也不可以在if语句中这样判断。逻辑运算符也只接受布尔类型的操作数。
print(true);
print(false);
print(!true);
print(true && false);
print(true || false);
dart之旅(二)- 内建类型的更多相关文章
- python高级编程之(类级):子类内建类型
# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #类级 #在2.2中,提出了类型(type0与类(class)统一( ...
- 零基础学python-4.2 其它内建类型
这一章节我们来聊聊其它内建类型 1.类型type 在python2.2的时候,type是通过字符串实现的,再后来才把类型和类统一 我们再次使用上一章节的图片来说明一些问题 我们通过对照上面的图片.在p ...
- proto3 不支持内建类型的非空判断即 hasXXX
proto3 移除了内建类型的非空判断方法 即代码生成工具不会为 bool int 等类型生成has方法 有使用过proto2 或者其它rpc 框架的人都知道使用has 方法去判断消息里的值是否设置, ...
- [golang note] 内建类型
基础类型 √ golang内建基础类型有布尔类型.整数类型.浮点类型.复数类型.字符串类型.字符类型和错误类型. 复合类型 √ golang支持的复合类型有指针.数组.数组切片.字典.通道.结构体和接 ...
- 内建类型,与用户自定义类型,返回值为const
1对内建类型来说,按值返回的是否为const,是无关紧要的,因为编译器已经不让它成为一个坐直,因为它总是一个值,而不是一个变量(thing in c++ page192) 2当处理用户自定义的类型时, ...
- python 内建类型
''' 数值 numbers 字符串 strings 列表 lists 字典 dictionaries 元组 tuples 文件 files 集合 sets ''' 1.1 序列的操作 所有序列类型都 ...
- [python学习篇][书籍学习][python standrad library][内建类型]之数值
数值类型 — int, float, long, complex 有四种不同的数值类型:普通整数.长整数.浮点数和复数 普通整数(或者简称整数)使用C中的long实现,其精度至少为32位(sys.ma ...
- 12.Python提供了哪些内建类型
There are mutable and Immutable types of Pythons built in types Mutable built-in types: List Set Dic ...
- [python学习篇][书籍学习][python standrad library][内建类型]迭代器类型
我们已经知道,可以直接作用于for循环的数据类型有以下几种:一类是集合数据类型,如list.tuple.dict.set.str等:一类是generator,包括生成器和带yield的generato ...
随机推荐
- Solidity类型Uint类型区分?
1. Solidity中默认 Uint 也就是Uint256, 也就是 无符号 256位整数范围,即 2的 256次方 减一的 10进制范围, 预计大小为: 115792089237316195423 ...
- mysql解压缩版安装方法以及mysql无法启动1067错误
https://jingyan.baidu.com/article/f3ad7d0ffc061a09c3345bf0.html我下载的版本号是5.6.421.解压到C:\Program Files\M ...
- nginx路径设置(web)
原文 https://www.jianshu.com/p/57db2c5d0cb9 语法 root 语法:root path 默认值:root html 配置段:http.server.locatio ...
- 密码\路径\IP...备忘录
1.linux 192.168.200.128:22 root/123456
- # 2019-2020-3 《Java 程序设计》实验一:Java开发环境的熟悉
2019-2020-3 <Java 程序设计>实验一:Java开发环境的熟悉-------1 一.实验要求: 1 建立"自己学号exp1"的目录 2 在"自己 ...
- 从服务器角度分析RPG游戏——NPC的AI
最近主程有些忙,甩给我一些服务器的代码,零零散散总结了一些要素. java程序架构也是层层分析,先罗列出需要做的工作,然后从主干到细节依次实现.就这点而言,程序和绘画有很多类似的地方. 关于怪物AI类 ...
- Linux 第十二天
文件系统 1.分区类型 主分区:总共最多只能分四个 扩展分区:只能有一个,也算作主分区的一种,也就是说主分区加扩展分区最多有四个.但是扩展分区不能存储数据和格式化,必须再划分成逻辑分区才能使用. 逻辑 ...
- MFC 字体
dc.DrawText(_T("hello"), -1, //全部 &rect, DT_SINGLELINE| //在一行 DT_CENTER| //水平居中 DC_VCE ...
- CUDA[4] sample program: matrix-vector multiplication
Use Compressed Sparse Row Format (CSR) to represent matrix #include "cuda_runtime.h" #incl ...
- Wordpress“固定链接”页面出现404原因及解决方法
编辑配置文件:/etc/apache2/apache2.conf(非常靠后的位置),将里面的AllowOverride选项由None设置为All. <Directory /> Option ...