美文网首页我爱编程
Dart4Flutter-01– 变量, 类型和 函数

Dart4Flutter-01– 变量, 类型和 函数

作者: 子龙哦 | 来源:发表于2018-06-21 23:48 被阅读35次

    Hello World

    dart 版的hello world

    main(List<String> args) {
      print('Hello World');
    }
    

    和Java语言类似,每个dart程序都有一个main,是整个程序的入口。

    将程序保存到hello_world.dart文件中,执行如下命令,就可以运行程序。

    dart hello_world.dart

    变量定义

    类似在JavaScript中一样,你可以使用var关键字定义变量

    main(List<String> args) {
      var number = 42;
      var name = 'Gurleen Sethi';
      var salary = 150300.56;
      var isDoorOpen = true;
    }
    

    但是,和JavaScript不同的是,在Dart2中,一旦你给变量赋值一种类型的值,就不能再赋值另一种类型的值。Dart 可以自动从右边数据推断数据类型。

    你也可以明确指定数据类型定义变量。

    main(List<String> args) {
      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(List<String> args) {
      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(List<String> args) {
      //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(List<String> args) {
      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(List<String> args) {
      var list = const [1,2,3,4];   
    }
    

    Maps

    定义map也很简单。可以使用花括号{}定义map。

    main(List<String> args) {
      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(List<String> args) {
      var squares = new Map();
      squares[4] = 16;
    }
    

    如果你想定义编译时常量的map,可以使用const关键字。

    main(List<String> args) {
      var squares = const {    //不能改变当前map的值
        2: 4,
        3: 9,
        4: 16,
        5: 25
      };
    }
    

    函数

    dart中的函数和JavaScript中有点类似。你需要定义就是函数的名字、返回值、参数。

    main(List<String> args) {
      var name = fullName('John', 'Doe');
      print(name);
    }
     
    String fullName(String firstName, String lastName) {
      return "$firstName $lastName";
    }
    

    你也可以省略返回值类型,程序同样可以运行。

    main(List<String> args) {
      var name = fullName('John', 'Doe');
      print(name);
    }
     
    fullName(String firstName, String lastName) {
      return "$firstName $lastName";
    }
    

    下面是定义一行函数的方法。

    main(List<String> args) {
      var name = fullName('John', 'Doe');
      print(name);
    }
     
    fullName(String firstName, String lastName) => "$firstName $lastName";
    

    命名参数

    dart有个叫命名参数的东西。当你调用函数的时候,你必须指定参数的名字。要使用命名参数,可以将函数的参数包括在花括号{}内。

    main(List<String> args) {
      var name = fullName(firstName: 'John', lastName: 'Doe');
      print(name);
    }
     
    fullName({String firstName, String lastName}) {
      return "$firstName $lastName";
    }
    

    如果你在调用命名参数的函数时,没有指定参数的名字,程序将崩溃。

    参数默认值

    你可以给函数的命名参数一个默认值。下面的例子给lastName一个默认值。

    main(List<String> args) {
      var name = fullName(firstName: 'John');
      print(name);
    }
     
    fullName({String firstName, String lastName = "Lazy"}) {
      return "$firstName $lastName";
    }
    

    函数是一等公民

    在dart中函数比较灵活,例如,你可以将函数当参数传递给另一个函数。

    main(List<String> args) {
      out(printOutLoud);
    }
     
    out(void inner(String message)) {
      inner('Message from inner function');
    }
     
    printOutLoud(String message) {
      print(message.toUpperCase());
    }
    

    这里定义一个函数名字为out,需要一个函数参数。然后我定义一个名为printOutLoud的函数,他所做的就是将字符串以大写的形式打印。

    dart 也有匿名函数,所以上面的例子中不用预定一个函数,而是传递一个匿名函数。

    main(List<String> args) {
      out((message) {
        print(message.toUpperCase());
      });
    }
     
    out(void inner(String message)) {
      inner('Message from inner function');
    }
    

    另一个匿名函数的例子。

    main(List<String> args) {
      var list = [1,2,3,4];
     
      list.forEach((item) {
        print(item);
      });
    }
    

    本教程结束。

    参考

    http://thetechnocafe.com/just-enough-dart-for-flutter-tutorial-01-variables-types-and-functions/

    相关文章

      网友评论

        本文标题:Dart4Flutter-01– 变量, 类型和 函数

        本文链接:https://www.haomeiwen.com/subject/wbdhyftx.html