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 有两种类型:

  • int

    整数值不大于64位, 具体取决于平台。 在 Dart VM 上, 值的范围从 -263 到 263 - 1. Dart 被编译为 JavaScript 时,使用 JavaScript numbers, 值的范围从 -253 到 253 - 1.

  • double

    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 协议 ,转载请注明出处!