美文网首页
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