Flutter (二) 初识Dart(上)

2021-12-03  本文已影响0人  学_iOS

感君一回顾,思君朝与暮。

<一>语法

  1. var、final、const
    • 我们在iOS中定义变量类型会是string,array,dictionary,number,int等。在dart中变量可以用var表示,静态常量const表示,其中变量中final 表示最后一次赋值。
    • 可以放置在变量中的所有内容都是一个对象,每个对象都是类的实例,由于类型判断,大多数变量也不需要声明类型。
    • final修饰的变量可能在之前iOS开发不太一样,只能赋值一次。
  2. num
    • 通常来说有double,int,其中num是可以变化的。
    num a = 10;
    a = 10.1;
    num b = 10.1;
    b = 10;
    
    • int 类型可判断偶数还是奇数isEven/isOdd
    • iOS int 类型 在做除法的时候,如果有有余数会自动舍弃,例如 int a=5/2; a的结果是 2
      Dart 中 int a=5/2; 这种方式是行不通的,直接就报错了, 因为 5/2 的结果是2.5,也就是说int 的除法会出现小数,正确的获取除法方式是 int a=5~/2;
    int intNumber = 5;
    num numNumber = -1.12;
    printString("除法结果是${intNumber/2}");
    printString("除法结果是${intNumber~/2}");
    
    //num 方法
    printString("有穷${numNumber.isFinite}");
    printString("无穷${numNumber.isInfinite}");
    printString("是否是非数字${numNumber.isNaN}");
    printString("是否是负数${numNumber.isNegative}");
    printString(numNumber.toInt()); //转换成int
    printString(numNumber.toDouble()); //转换成Double
    
    //int 方法
    printString("是否偶数${intNumber.isEven}");
    printString("是否奇数${intNumber.isOdd}");
    
    //常用方法
    printString("绝对值${numNumber.abs()}");
    printString("四舍五入${numNumber.round()}");
    printString("向下取整${numNumber.floor()}");
    printString("向上取整${numNumber.ceil()}"); 
    
    • 结果如下
     flutter: 除法结果是2.5
     flutter: 除法结果是2
     flutter: 有穷true
     flutter: 无穷false
     flutter: 是否是非数字false
     flutter: 是否是负数true
     flutter: -1
     flutter: -1.12
     flutter: 是否偶数false
     flutter: 是否奇数true
     flutter: 绝对值1.12
     flutter: 四舍五入-1
     flutter: 向下取整-2
     flutter: 向上取整-1
    

3.String

4.bool

5.List

6.Set

7.Map

8.Map与List的相互转化

9.运算符

<二>dynamic、var、Object三者的区别

  1. dynamic:是所有Dart对象的基础类型, 在大多数情况下,通常不直接使用它,
    通过它定义的变量会关闭类型检查,这意味着 dynamic x = 'hal';x.foo();
    这段代码静态类型检查不会报错,但是运行时会crash,因为x并没有foo()方法,所以建议大家在编程时不要直接使用dynamic;
    var:是一个关键字,意思是“我不关心这里的类型是什么。”,系统会自动推断类型runtimeType;
    Object:是Dart对象的基类,当你定义:Object o=xxx;时这时候系统会认为o是个对象,你可以调用o的toString()和hashCode()方法
    因为Object提供了这些方法,但是如果你尝试调用o.foo()时,静态类型检查会进行报错;
    综上不难看出dynamic与Object的最大的区别是在静态类型检查上;
上一篇下一篇

猜你喜欢

热点阅读