Hello World
dart 版的hello world
main(Listargs) { print('Hello World');}
和Java语言类似,每个dart程序都有一个main,是整个程序的入口。
将程序保存到hello_world.dart
文件中,执行如下命令,就可以运行程序。
dart hello_world.dart
变量定义
类似在JavaScript中一样,你可以使用var关键字定义变量
main(Listargs) { var number = 42; var name = 'Gurleen Sethi'; var salary = 150300.56; var isDoorOpen = true;}
但是,和JavaScript不同的是,在Dart2中,一旦你给变量赋值一种类型的值,就不能再赋值另一种类型的值。Dart 可以自动从右边数据推断数据类型。
你也可以明确指定数据类型定义变量。
main(Listargs) { int number = 42; String name = 'Gurleen Sethi'; double salary = 150300.56; bool isDoorOpen = true;}
If you don’t intend to change the value held by a variable, then declare it with a final or a const.
如果你不想改变变量所持有的值,可以用关键字final
或者const
声明。
main(Listargs) { final int number = 42; const String name = 'Gurleen Sethi'; //Omit explicitly defining data types final salary = 150300.56; const isDoorOpen = true;}
final 和 const的不同在于,const是编译时常量。例如,const变量在编译时必须要有一个值。例如,const PI = 3.14
,然而final变量只能被赋值一次,他不需要在编译时就赋值,可以在运行时赋值。
内置的数据类型
dart语言提供所有现代语言提供的所有基本数据类型。
- Numbers
- Strings
- Booleans
- Lists
- Maps
main(Listargs) { //Numbers int x = 100; double y = 1.1; int z = int.parse('10'); double d = double.parse('44.4'); //Strings String s = 'This is a string'; String backslash = 'I can\'t speak'; //String interpolation String interpolated = 'Value of x is $x'; //Prints: Value of x is 100 String interpolated2 = 'Value of s is ${s.toLowerCase()}'; //Prints: Value of s is this is a string //Booleans bool isDoorOpen = false;}
Lists
声明一个list非常的简单,可以简单使用方括号[]定义list。下面是list的常用操作。
main(Listargs) { var list = [1,2,3,4]; print(list); //Output: [1, 2, 3, 4] //Length 长度 print(list.length); //Selecting single value 获取单个值 print(list[1]); //Outout: 2 //Adding a value 添加值到list list.add(10); //Removing a single isntance of value 删除单个值 list.remove(3); //Remove at a particular position 删除指定位置的值 list.removeAt(0);}
如果你想定义一个编译时常量list,例如,list的内容是不可改变的,可以使用关键字const
.
main(Listargs) { var list = const [1,2,3,4]; }
Maps
定义map也很简单。可以使用花括号{}定义map。
main(Listargs) { var map = { 'key1': 'value1', 'key2': 'value2', 'key3': 'value3' }; //Fetching the values 获取值 print(map['key1']); //Output: value1 print(map['test']); //Output: null //Add a new value 添加值 map['key4'] = 'value4'; //Length 获取长度 print(map.length); //Check if a key is present 检查是否存在 map.containsKey('value1'); //Get entries and values var entries = map.entries; var values = map.values;}
你也可以使用map构造函数定义map。
main(Listargs) { var squares = new Map(); squares[4] = 16;}
如果你想定义编译时常量的map,可以使用const
关键字。
main(Listargs) { var squares = const { //不能改变当前map的值 2: 4, 3: 9, 4: 16, 5: 25 };}
函数
dart中的函数和JavaScript中有点类似。你需要定义就是函数的名字、返回值、参数。
main(Listargs) { var name = fullName('John', 'Doe'); print(name);} String fullName(String firstName, String lastName) { return "$firstName $lastName";}
你也可以省略返回值类型,程序同样可以运行。
main(Listargs) { var name = fullName('John', 'Doe'); print(name);} fullName(String firstName, String lastName) { return "$firstName $lastName";}
下面是定义一行函数的方法。
main(Listargs) { var name = fullName('John', 'Doe'); print(name);} fullName(String firstName, String lastName) => "$firstName $lastName";
命名参数
dart有个叫命名参数的东西。当你调用函数的时候,你必须指定参数的名字。要使用命名参数,可以将函数的参数包括在花括号{}内。
main(Listargs) { var name = fullName(firstName: 'John', lastName: 'Doe'); print(name);} fullName({String firstName, String lastName}) { return "$firstName $lastName";}
如果你在调用命名参数的函数时,没有指定参数的名字,程序将崩溃。
参数默认值
你可以给函数的命名参数一个默认值。下面的例子给lastName一个默认值。
main(Listargs) { var name = fullName(firstName: 'John'); print(name);} fullName({String firstName, String lastName = "Lazy"}) { return "$firstName $lastName";}
函数是一等公民
在dart中函数比较灵活,例如,你可以将函数当参数传递给另一个函数。
main(Listargs) { out(printOutLoud);} out(void inner(String message)) { inner('Message from inner function');} printOutLoud(String message) { print(message.toUpperCase());}
这里定义一个函数名字为out
,需要一个函数参数。然后我定义一个名为printOutLoud
的函数,他所做的就是将字符串以大写的形式打印。
dart 也有匿名函数,所以上面的例子中不用预定一个函数,而是传递一个匿名函数。
main(Listargs) { out((message) { print(message.toUpperCase()); });} out(void inner(String message)) { inner('Message from inner function');}
另一个匿名函数的例子。
main(Listargs) { var list = [1,2,3,4]; list.forEach((item) { print(item); });}
本教程结束。
参考