Dart的所有东西都是对象。它们都继承自Object,默认是都是null。Dart中支持以下数据类型:
Dart中提供了两种数值类型, 分别是整型int和浮点型double.
void main() {
//定义一个数值型a, 给a赋值为1
num a = 1;
print(a); //打印a的值为1
a = 1.1; //给a赋值为1.1
print(a); // 打印a的值为1.1
int b = 1;
b = 1.1 //此时会报错:A value of type 'double' can't be assigned to a variable of type 'int'.
}
可以发现, 如果是使用 num 声明的变量,那么可以在 int 和 double 之间相互转换.
但如果是直接定义了 int 或者 double , 那么就不能再赋其他类型的值.
加减乘都好理解了 , 我们看一下剩下的几个操作:
void main() {
var a = 5 / 2; // 2.5
var b = 5 ~/ 2; // 2
var c = 5 % 2; // 1
}
直接使用 /
获得的结果是长除法的结果 ,
而使用 ~/
获得的结果是短除法中的商,
而是用 %
就是取余数的操作了.
void main() {
int i = 1;
print(i.isNaN); // false
print(i.isOdd); // true
print(i.isEven); // false
print(i.sign); //1
}
double i = 1.5;
print(i.sign); //1.0
print(i.abs()); //1.5
print(i.round()); //2
print(i.ceil()); //2
print(i.floorl()); //1
print(i.toInt().toDouble()); //1.0
普通字符串使用单引号或者双引号都可以,多行的可以使用'''
来包裹.
String a = '我是字符串';
String b = '我也是字符串';
String c = '''第一行
第二行 ''';
声明原始字符串,直接在字符串前加字符“r” , 可以避免“\”的转义作用,在正则表达式里特别有用
print('换行符: \n'); //输出 : 换行符:
print(r'换行符: \n'); //输出 : 换行符: \n*/
//使用+ 连接
String a = '字符串1'+'字符串2';
//使用空格拼接
String b = 'adc' 'def' 'gg1';
//拼接对象和表达式
String a = 'a';
String k = '123${a.toString()}';
String s = '123${a}';
String l = '123$a';
可以在字符串中使用${}
中包裹来实现拼接, 如果{}
内是一个对象可以省略{}
.
为了表示布尔值,Dart有一个名为的类型bool。 只有两个对象具有bool类型:true和false,它们都是编译时常量。
assert 是语言内置的断言函数,仅在检查模式下有效 如果断言失败则程序立刻终止
String name = 'Li';
assert(name == "Li");
称作集合(数组). 是有序且可重复的.
List a = [];
List b = [1,2,3,"a"];
List c = new List();
List<int> d = [1,2,3];
是键值对的集合, 一般来说,map是将键和值相关联的对象。键和值都可以是任何类型的对象。 每个键只出现一次,但你可以多次使用相同的值。Dart支持map由map文字和map类型提供。
再聊点const
和final
,用法和其他语言类似
在声明变量的时候,除了var
,还可以使用const
和final
同时,在使用const
和final
的时候,可以省略var
或者其他类型
var i = 10;
const i = 10;
final i = 10;
int i = 10;
const int i = 10;
final int i = 10;
const
和final
定义的都是常量,值不能改变
并且在声明的时候就必须初始化
但是也有细微差别,简单来说
const
定义的是编译时常量,只能用编译时常量来初始化
final
定义的常量可以用变量来初始化
final time = new DateTime.now(); //Ok
const time = new DateTime.now(); //Error,new DateTime.now()不是const常量
var、final
等在左边定义变量的时候,并不关心右边是不是常量
但是如果右边用了const
,那么不管左边如何,右边都必须是常量
const list = const[1,2,3];//Ok
const list = [1,2,3];//Error
final list = [1,2,3];//Ok
final list = const[1,2,3];//Ok
final list = const[new DateTime.now(),2,3];//Error,const右边必须是常量
作者:__white
链接:https://juejin.cn/post/6996250246313410596
来源:掘金
在Dart中,一切都是对象,一切对象都是class的实例,哪怕是数字类型、方法甚至null都是对象,所有的对象都是继承自Object;虽然Dart是强类型语言,但变量类型是可选的因为Dart可以自动推断变量类型
Flutter 提升了客户端开发的效率,但在跟 Native 代码配合开发时也带来了不好的体验。于是我写了个 Flutter 插件 dart_objc ,使开发者可以用 Dart 的语法来写 Objective-C 代码。借助于 Flutter 的热重载,也可以更高效的动态调试 Native 代码
一条执行线上,同时且只能执行一个任务(事件),其他任务都必须在后面排队等待被执行。也就是说,在一条执行线上,为了不阻碍代码的执行,每遇到的耗时任务都会被挂起放入任务队列
今天我们来比较两种在跨平台移动应用开发中最具竞争力的编程语言: Dart Vs JavaScript。Javascript 和 Dart 都是跨平台移动应用程序开发的不错选择
如果你的程序中有两个方法,这两个方法桉顺序执行,第一个方法执行需要五秒,如果是同步代码,第二个方法会等待第一个方法执行完,才会被调用,如果第一个方法是异步的,程序在执行第一个方法时
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!