浅学一下Dart语法

154 阅读2分钟

Dart的设计目标应该是既对标Java,也对标JavaScript,Dart在静态语法方面和Java非常相似,如类型定义、函数声明、泛型等,而在动态特性方面又和JavaScript很像,如函数式特性、异步支持等。除了融合Java和JavaScript语言之所长之外,Dart也具有一些其它具有表现力的语法,如可选命名参数..(级联运算符)?.(条件成员访问运算符)以及??(判空赋值运算符)

在Dart中其实看到的不仅有Java和JavaScript的影子,它还具有其它编程语言中的身影,如命名参数在Objective-C和Swift中早就很普遍,因此我们可以看到Google对Dart语言给予厚望,是想把Dart打造成一门集百家之所长的编程语言。

1.变量声明

(1)var

有点像JavaScript中的var,可以接收任何类型的值,但一赋值,类型便会确定,不能再改变其类型。Dart是一个强类型语言,而JavaScript是纯粹的弱类型脚本语言。

(2)dynamic和Object

Dynamic和Object 与 var功能相似,都会在赋值时自动进行类型推断,不同在于,赋值后可以改变其类型。

(3)final和const

如果您从未打算更改一个变量,那么使用 final 或 const。 一个 final 变量只能被设置一次,两者区别在于:const 变量是一个编译时常量,final变量在第一次使用时被初始化。被final或者const修饰的变量,变量类型可以省略。

2.函数

Dart是一种真正的面向对象的语言,所以即使是函数也是对象,并且有一个类型Function。这意味着函数可以赋值给变量或作为参数传递给其他函数,这是函数式编程的典型特征。

(1)函数声明

dart函数声明如果没有显示申明返回值类型时会默认当做dynamic处理,注意,函数返回值没有类型推断。

(2)对于只包含一个表达式的函数,可以使用简写语法。也就是箭头函数

(3)函数作为变量

(4)函数作为参数传递

(5)可选的位置参数
包装一组函数参数,用[]标记为可选的位置参数

(6)可选的命名参数
定义函数时,使用{param1, param2, …},用于指定命名参数。调用函数时,可以使用指定命名参数。可选命名参数在Flutter中使用非常多。