Dart

Dart - 类型声明

2019-11-29  本文已影响0人  LouisXWB

声明概述

虽然Dart是一门强类型语言,但是声明变量时既可以用静态类型声明,也可以用var可选类型声明,还有dynamic类型声明,因为Dart能进行类型推断。

声明种类

分类说明

1、静态类型

声明变量的时候,使用明确的数据类型:

String name = "Jay";
int number = 123;
2、var可选类型

使用 var 来声明变量,不需要指定变量的明确类型,因为 Dart 会自动推断其数据类型,所以可以使用 var 来定义任何的变量:

var content = 'Dart Languge'; 
var switchOn = false;
var current = 123

为什么能用var定义所有的变量?
原因是var 并不是用来直接存储值的,而是存储的值的对象的引用,例如:var content = 'Dart' 这句,是名字为 content 的 var 变量存储了值为 'Dart' 的 String 对象的引用,所以 var 才能定义任何变量。

3、dynamic动态类型

dynamic的意思是数据类型是动态可变的,也可以定义为任何变量,但是和 var 不同的是,var 一旦赋值后,就不能改变数据类型了:

dynamic example = 'example';
example = 1;//✅  这个使用方法正确,因为 dynamic 的类型是动态可变的
var content = 'Dart 语法';
content = 1; //❌ 错误的使用方法,content为String,不能赋值数字类型
4、 Object 基类声明

Dart 里所有东西都是对象,是因为 Dart 的所有东西都继承自 Object,因此 Object 可以定义任何变量,而且赋值后,类型也可以更改:

Object index = 100;
index = 'string';//✅ 因为  'String' 也是 Object
疑问:dynamicObject类型到底有什么区别?

首先:请不要滥用 dynamic,一般情况下都可以用 Object 代替 dynamic;
其次:dynamic是有应用场景的,当变量没法用 Dart 的类型来表示时,比如 Native 和 Flutter 交互,从 Native 传来的数据并不能Object能声明的,所以你会看到 PlatformChannel 里有很多地方使用到了 dynamic。

上一篇下一篇

猜你喜欢

热点阅读