first
尽管 Dart 是强类型的,但是 Dart 可以推断类型
main()
程序开始执行函数,该函数是特定的、必须的、顶级函数。
Dart 支持泛型,如
List
(整数列表)或List
(任何类型的对象列表)。与 Java 不同,Dart 没有关键字 “public” , “protected” 和 “private” 。 如果标识符以下划线(_)开头,则它相对于库是私有的
标识符 以字母或下划线(_)开头,后跟任意字母和数字组合。
动态类型
如果对象不限定为单个类型,可以指定为 对象类型
或 动态类型
.
dynamic name = dynamic name = 'Bob';
默认值
未初始化的变量默认值是 null
。即使变量是数字 类型默认值也是 null,因为在 Dart 中一切都是对象,
Final 和 Const
Const 变量在编译时就已经固定
Final 变量的值只能被设置一次
内建类型
Dart 语言支持以下内建类型:
- Number
- String
- Boolean
- List (也被称为 Array)
- Map
- Set
- Rune (用于在字符串中表示 Unicode 字符)
- Symbol
这些类型都可以被初始化为字面量。 例如, 'this is a string'
是一个字符串的字面量, true
是一个布尔的字面量。
因为在 Dart 所有的变量终究是一个对象(一个类的实例), 所以变量可以使用 构造涵数 进行初始化。 一些内建类型拥有自己的构造函数。 例如, 通过 Map()
来构造一个 map 变量。
Number
Dart 语言的 Number 有两种类型:
-
整数值不大于64位, 具体取决于平台。 在 Dart VM 上, 值的范围从 -263 到 263 - 1. Dart 被编译为 JavaScript 时,使用 JavaScript numbers, 值的范围从 -253 到 253 - 1.
-
64位(双精度)浮点数,依据 IEEE 754 标准。
整数类型不包含小数点。
String
Dart 字符串是一组 UTF-16 单元序列。 字符串通过单引号或者双引号创建。
提示: ==
运算符用来测试两个对象是否相等。 在字符串中,如果两个字符串包含了相同的编码序列,那么这两个字符串相等。 units.
使用连续三个单引号或者三个双引号实现多行字符串对象的创建:
使用 r
前缀,可以创建 “原始 raw” 字符串:
Boolean
Dart 使用 bool
类型表示布尔值。 Dart 只有字面量 true
and false
是布尔类型, 这两个对象都是编译时常量。
Dart 中的 List 字面量非常像 JavaScript 中的 array 字面量。 下面是一个 Dart List 的示例:
var list = [1, 2, var list = [1, 2, 3];
提示: Dart 推断 list
的类型为 List
。
在 List 字面量之前添加 const 关键字,可以定义 List 类型的编译时常量:
var constantList = const [1, 2, var constantList = const [1, 2, 3];
// constantList[1] = 1; // 取消注释会引起错误。
函数
函数也是对象,并且有一个类型Function。这意味着函数可以赋值给变量或作为参数传递给其他函数,这是函数式编程的典型特征
1.函数声明
Dart函数声明如果没有显式声明返回值类型时会默认当做dynamic
处理,注意,函数返回值没有类型推断:
2.对于只包含一个表达式的函数,可以使用简写语法
bool isNoble (int atomicNumber)=> _nobleGases [ atomicNumber ] != bool isNoble (int atomicNumber)=> _nobleGases [ atomicNumber ] != null ;
3.函数作为变量
var say = (str){
print(str);
};
say("hi world");
4.函数作为参数传递
void execute(void execute(var callback) {
callback();
}
execute(() => print("xxx"))
6.可选的命名参数
定义函数时,使用{param1, param2, …},放在参数列表的最后面,用于指定命名参数。例如:
//设置[bold]和[hidden]标志
void enableFlags({bool bold, bool hidden}) {
// ...
}
调用函数时,可以使用指定命名参数。例如:paramName: value
enableFlags(bold: true, hidden: enableFlags(bold: true, hidden: false);
可选命名参数在Flutter中使用非常多。
注意,不能同时使用可选的位置参数和可选的命名参数
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!