dart语言基础

2020-02-12

大标题

近日开始学习Flutter,自然也就免不了学习dart语言,作为一名C#转前端,时隔多年又用上了强类型语言,配合vscode使用,颇为亲切,仿佛又回到了快乐的winform开发时代。dart学习的话,本人是官网入门教程配合《Flutter 从0到1构建大前端应用》,dart官网的中文文档已经很完善,本文站在前端的角度上会对dart和javascript两种语言做一些对比,使前端同学可以更快的学习dart语言,话不多说,下边直奔主题。

概述

dart是一门单继承强类型语言,所有类都是Object类的子类,dart程序必须有一个主入口函数main(),这和C#是一致的。

关键字

这里没啥可说的,直接截张图,需要具体了解的请移至官方文档, 传送门

变量声明

dart声明变量有以下几种方式:

  • 通过具体类型定义:声明类型在关键字前,变量类型声明后不可更改

String str = '我是字符串';
print(str); // 我是字符串
str = 1; // Error: A value of type 'int' can't be assigned to a variable of type 'String'.

  • Object基类定义:可以赋值任何类型,这种做法是不推荐的,开发过程中我们需要尽量为变量确定一个类型

Object obj = '我是对象';
print(obj); // 我是对象
obj = 1;
print(obj); // 1

  • var定义:var定义如果不赋值的话,默认值为null,js中默认为undefined。Dart使用var定义时,变量如果声明时被赋值,就会根据值的类型进行类型推断,此变量再次赋值时也必须是第一次值的类型,否则会抛出类型错误,js则可以任意类型赋值

var v;
print(v); // null
v = "v是字符串";
print(v); // v是字符串
v = 1;
print(v); // 1
var v1 = "类型推断";
v1 = 1; // Error A value of type 'int' can't be assigned to a variable of type 'String'

  • dynamic类型定义:dynamic表示特殊类型,编译器对其不会做任何类型检查。类似于ts中的any,慎用

dynamic dy;
dy = 1;
print(dy);  // 1
dy = "string";
print(dy);  // string

  • const和final定义:使用过程中不会被修改的变量.const的使用方式与js类似,稍有区别在于dart中的const只能赋值常量值,如果将其他定义好的变量赋值给const常量会抛出类型错误,js中因没有类型检查,是可以这样做的。final变量值只能被设置一次,使用过程中与const的区别在于,实例变量可以是final类型,但不能是const类型,话有点多,看🌰

var vc = 1;
const co = vc + 1;  // Not a constant expression. js可以这样做,co会是2
const cL = List(); // Error: Cannot invoke a non-'const' factory where a const expression is expected
final fL = List();
print(fL); // []  

  • 最后给一下官方文档变量部分传送门

参考

原文链接:juejin.im

上一篇:swiper.js loop 小坑
下一篇:如何引入 icon
相关教程
关注微信

扫码加入 JavaScript 社区

相关文章

首次访问,需要验证
微信扫码,关注即可
(仅需验证一次)

欢迎加入 JavaScript 社区

号内回复关键字:

回到顶部