美文网首页
Flutter 中Dart 基础变量等相关操作

Flutter 中Dart 基础变量等相关操作

作者: GaoEnron | 来源:发表于2020-06-13 20:34 被阅读0次

    一、重要概念

    • 一切变量都是对象,包括数字,函数和null
    • 对象是类的实例,所有类都继承与Object
    • 强类型但支持类型推断
    • 如果不想制定具体类型可以使用 dynamic
    • 支持泛型,比如List<int> 或者 List<Dynamic>
    • 支持顶层函数、类方法、实例方法和嵌套函数
    • 支持顶层变量、类变量、实例变量和局部变量。

    二、变量的私有和公开

    Dart 变量只有私有和公开两种类型

    • _下划线开头变量为私有、只能在Library中使用
    • 标识符只能以字母或者下划线大头、后面跟任意多个字母、数字或者下划线字符
    • 表达式在运行时可以求值,而语句不可以
    • 代码问题分为 warningerror两种类型, warning不会阻止程序的运行,但是error会阻止程序运行
    • error分为编译时错误运行时错误两种,运行时错误会导致抛出异常

    三、变量

    • 变量类型可以自动推断,也可以显示指定
    • 为初始变量值都为null包括数字
    • 如果某个变量值在定义之后不会再改变,那就声明为final或者const
    • finalconst 变量只能赋值一次,但是 const变量在编译时候
    • finalconst变量必须在定义时候就完成初始化,
    • const 变量的值必须为编译时常量,包括数字和字符串字面量、其它常量算数运算结果
    • 初始化const 变量可以省去前面的const 应为const肯定是常量
    • 常量是防止内容变化、常量避免变量寻址、final变量用来提升代码安全性
    void main() {
      var name = 'Jagger Gao';
      String nickname = 'tianhuao';
    
      var n; // null 如果没有赋值
      print(n);
      
      final s = 'dart final'; // 运行时决定时候 如果需要 是在运行时候得到的值,可以使用 final
      const c = 'dart const';
      
      const r = 10;
      const double area = 3.1e3344 * r * r; // 编译时候可以确定下来
      var v1 = const []; // 常值 空变量
      final v2 = const []; // 长治
      const v3 = []; // 常量执行的值,只能是 
      v1 = [1, 2, 3]; // 对变量可以再次赋值
    }
    

    四、哈希表

    • 哈希表是表示关联件和关联值,键和值可以是任意类型对象,但是键必须唯一
    • 私用[]操作符来操作哈希表
    • 使用哈希表字面量使用const 声明常量

    五、符文

    • Rune是由 UTF32码点(Code Point) 组成的字符串,一个Rune字符对应一个Unicode字符
    • 码点 一般使用4 个十六进制字符串\uxxxx 来表示,如果超过 4 个 则需要使用{} 将使用十六进制字符括起来
    • 字符串Rune 直接可以互相转换
     var clapping = '\u{1f44f}'; // 超过一个字符使用大括号 通过 \u +  {} 表示 长度 为 2
      print(clapping);
      print(clapping.codeUnits);
      print(clapping.runes.toList()); // 码点序列表示
    

    六、布尔类型

    • 只有两个值truefalse 都是编译时常量
    • 需要布尔类型,必须使用布尔值

    七、列表 List

    • 列表就是其它语言中的数组,用来表示对象序列
    • 列表的索引号从开始,到list.length-1
    • 在列表字面量前使用const 来声明常量
    • 使用 [] 操作符来操作列表的元素

    例子

    void main() {
      
      var x = 1; // 自动推断为常数
      var hex = 0xDEADBEEF;
      print(hex);
      
      var y = 1.1; // 数字字面量 
      var exponents = 1.42e5; // 科学计数法
      
      print('输出当前exponenets ${ exponents }'); // 
      
      double z = 1; // 明确变量类型
      
      var one = int.parse('1'); // 字符串类型转换得到相应整型
      assert(one == 1);
      
      var onePointPine = double.parse('1.1'); //
      assert(onePointPine == 1.1); // 断言失败会抛出异常
      
      String piAsString = 3.1415926.toStringAsFixed(2); // 转换成字符串并保留小数点后面指定位数
      print('piAsString ${ piAsString }'); // 
      assert(piAsString == '3.14'); // 断言失败会抛出异常
     
      // 左移运算
      assert((3 << 1) == 6);  
      var leftGo = 3 << 1;
      print('leftGo ${ leftGo }'); // 
      
      // 右移运算
      assert((3 >> 1) == 1); 
      var rightGo = 3 >> 1;
      print('rightGo ${ rightGo }'); // 
    }
    
    • 两个字符串插值表达

       // 字符串的插值
        var insetStr = 'INSERT  VALUE';
        var completeInsert = 'my  inset String $insetStr with Result';
        print('completeInsert ${ completeInsert }'); // 
      
    • 字符串拼接操作

       // 使用 + 号 拼接字符串 
        var firstStr = 'INSERT  VALUE';
        var sendStr = 'my  inset String with Result';
        var reusltComplete =  firstStr + sendStr;
         print('reusltComplete ${ reusltComplete }'); // 
        
       
        
       
      
    • 换行的方式

      使用 ’‘’ 或者 “”“ 三单引号 和 三双引号

       //  使用 ’‘’ 或者 “”“ 三单引号 和 三双引号
        var s1 = '''
        you can create
        muti-line  sting.
        ''';
         print('s1 ${ s1 }'); // 
         
          /// 进行相应的换行操作
        var s2 = 'you can use \n line feed';
        print('s2进行换行操作 ${ s2 }'); //
        
        /// 如果前面有 r 字符标识不做转义
        var s3 = r'you can use \n line feed';
        print('s3进行换行操作 ${ s3 }'); // 保持原样输出
      

    0/0 问题不会抛出异常(需要注意)

    iMeantToDoThis.isNaN 进行判断

    // -------
      var unicorn;
      assert(unicorn == null); // 进行断言
      
      // 不会抛出异常
      var iMeantToDoThis = 0/0;
      assert(iMeantToDoThis.isNaN); // 进行断言
    

    相关文章

      网友评论

          本文标题:Flutter 中Dart 基础变量等相关操作

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