Dart基础语法归纳

定义一个函数

//定义一个函数
printBookName(String bookName){
print('The book name is $bookName');  //输出信息到控制台
}

//程序执行入口
main(){
 var book ='第一行代码';//声明和初始化变量
 printBookName(book); //调用函数
}

从上面的范例可以总结以下几点:

  • 单行注释
  • 表示字符串这种数据类型,其他内置类型还有int,List和bool等
  • 输出信息到控制台
  • 一个字符串字面量,通过单引号或双引号实现
  • 字符串中引用变量的值需要在变量或表达式前添加符号“$”表示引用其字面量
  • 这是一种特殊的,必需的顶级函数,应用程序从这里开始执行
  • 声明变量而不指定其类型

变量与常量

Dart语言是动态类型语言,可以使用Var声明变量,也可以使用具体类型(比如String)来直接声明变量。当使用var声明变量时,可赋予不同类型的值,变量类型会在编译时根据值的类型确定,例如

//创建并初始化变量实例
var book='第一行代码'; //字符串类型
var number=1; //整数类型

//显示声明类型,例如使用String显示声明字符串类型
String book='第一行代码';

变量类型不确定时也可以使用Object或dynamic关键字声明变量,它们均可以接收任意类型的值,不过两者却有区别。Object是所有类的父类,而dynamic表示不确定当前类型,使用Object时会在编译时进行检测,如果有错误方法则会报错,而dynamic编译时不做类型检测,如果有错误则会在运行时抛出。例如:

//对象没有明确类型时,可以用Object或dynamic关键字
Object book1='第一行代码'
dynamic book2='第一行代码'

book2['obj']=4;//可以编译通过但在运行时会抛出NoSuchMethodError

如果定义一个不会改变值的变量,那么使用final或const,被final修饰的变量只能被设置一次;const变量是一个编译时常量,也就是在声明的同时就要进行初始化。被final或const修饰的变量不能和var同时使用,变量类型可以省略:

final String book='第一行代码';
cosnt String book='第一行代码'

特殊数据类型

Dart中支持以下特殊类型:number(数字),Strings(字符串),booleans(布尔),list(集合),maps(map集合),runes(字符),symbols(符号)等等

(1)list集合
//创建一个int类型的list
List list=[1,2,3];

//创建一个编译时常量const的list
List constantList=const[1,2,3];

map集合

两种方式

  • 直接声明
Map books={'one':'hello','two':'world'};
  • 先声明,再赋值
Map books=new Map();
books['one']='hello';
books['two']='world';

函数 Function

在Dart中函数也是对象,属于Function类型,它可以被分配给变量或作为参数进行传递,以下是一个函数的例子:

bool isGoodBook(String bookName){
return _goodBooks[bookName] !=null;
}

可选命名参数

定义函数时,使用{param1,param2,…}指定可选命名参数。例如

//设置[bold]和[hidden]标志
void enableFlags(int num,{bool bold,bool hidden}){
//...
}

可选位置参数

包装一组函数参数,用“[]”将它们标记为可选的位置参数:

String say(String name,String msg,[String device,String device2]){
var result='$name says $msg';
if(device !=null){
if(device2!=null){
result='$result with a$device $device2';
}else{
result='$result with a$device;
    }
}
return result;
}

匿名函数

匿名函数即无方法名,例如

var list=['Android','ios','Flutter'];
//这里省略了方法名,只保留了参数forEach为Iterable提供遍历接口
list.forEach((item){
print('${list,indexOf(item)}:$item');

你可能感兴趣的:(跨平台)