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 ...
随机推荐
- c#: WebBrowser控制台输出
还是处理视频下载所相关的问题. 有些网站,它的页面代码是由页面加载后js动态生成,那么其原始的html便不能用.页面渲染后的代码,是我们需要的 c#中,我用WebBrowser这个控件处理.设置项目类 ...
- 如何配置Java环境变量[转]
https://jingyan.baidu.com/article/fd8044fa2c22f15031137a2a.html
- 24. Swap Nodes in Pairs 链表每2个点翻转一次
[抄题]: Given a linked list, swap every two adjacent nodes and return its head. Example: Given 1->2 ...
- stark组件开发之添加功能实现
添加功能,还是使用, form 组件来完成! 并且 完成添加之后,需要保留原搜索条件. def memory_url(self): '''用于反向生成url, 并且携带,get请求的参数,跳转到下一 ...
- 第二次spring会议
今天所做之事: 我用C#用DelectText对行数进行了定义,刚开始写代码有点无从下手. 遇到的问题:刚开始用datagridView进行了文本的输入,但是它更适合EXCEL之类的数据计算不符合我们 ...
- django的简单原理
一.自定义客户端和服务端的请求响应 1.客户端打开url,向服务器发出请求 2.服务端用socket写一个py,用于接收请求和做出响应 3.服务端接收请求 4.服务端模拟HTTP协议做出响应,状态行为 ...
- CentOS7 启动中文输入法
CentOS 系统中是带有中文输入法的(智能拼音),启动方式如下: Applications --> System Tools --> Setting --> Region &am ...
- java生成pdf文件 --- Table
Java利用itext实现导出PDF文件 所需要的jar包:com.lowagie.text_2.1.7.v201004222200.jar jar包下载地址:http://cn.jarfire.or ...
- RISC与CISC比较
1.RISC与CISC的差异 处理器的指令集可简单分为2种,CISC(complex instruction set computer)以及RISC(reduced instruction set c ...
- mysql常用连接查询
连接数据库PDO $user = "root"; //数据库连接账号 $pass = "root"; //数据库连接密码 $dbname = "tes ...