美文网首页
Dart语法解析

Dart语法解析

作者: 爱你为你做饭 | 来源:发表于2022-09-06 15:03 被阅读0次

1.dart整理:

  • 使用场景:跨平台/web/服务器或者脚本
  • SDK的安装和升级:
    • dart sdk安装和升级 mac上都是借助于home brew工具,命令如下:
      brew tap dart-lang/dart brew install dart -devel
      借助于命令 brew info dart 校验sdk是否安装成功。

2.dart语法整理:

  • Dart和java一样是编译型语言,Dart Runtime运行前需要编译,Dart也是面向对象的语言。

  • 变量和常量

    • dart的变量和常量和java类似只是对应的关键词不一样。
    • dart变量和常量的声明没有作用域一说,变量的声明依赖关键字var 即:var a = 10,类似于js,声明时可以不指定对应的类型,在第一次使用赋值的时候就决定了其类型 后续不能够对其类型进行修改,赋值其他类型出现异常崩溃。
    • dart常量两个关键词final和const,两只的区别是:final 声明常量仅能赋值一次和java类似,const声明的常量仅在编译阶段赋值一次 在运行阶段可以赋值。
    • 关键词dynamic 声明变量可以忽略变量所属的类型检查即:dynamic a = 10,后续 a="abc"是成立的因为忽略了类型检查。
    • dart面向对象编程且是强类型编程语言,object和java类似是所有对象类的父类,object aa是成立的。
  • dart和java类似,java中的基本类型在dart中都存在,num数值型,字符串,布尔值,list列表,map。

    • dart中的数值型仅有int和double型,变量声明的时候三个关键字都可以用即:num/int/double,区别是后面两个指定了对应的数据类型,前面的num是后面两个的父类即num声明变量即可以赋值int也可以赋值double。
    • java数值型的运算符在dart基本都可以使用:+/-/*///%等等,且类似于java中的math工具类,数值型变量提供了一系列的api进行数值计算。
    • dart中的字符串使用''/""/创建,和java不同的是可以使用""/'" a "'创建多行字符串,java创建多行字符串通常是使用+号拼接。
    • dart 使用r创建raw字符串,当前仅作记录后面使用时候再做补充处理。
    • dart字符串的拼接可以使用空格符/加号拼接
    • dart字符串可以使用==校验是否相等,另外和java类似每一个字符串对象也存在一系列的api用于字符串的处理。
    • dart不支持字符串和其他类型直接拼接,其他类型在字符串中展示需要借助于即String aa = "abcdef{cc=10}".此用法在其他语言kotlin/grrove都在使用。
    • dart 中的布尔值 true和false两种值且属于编译时常量。
    • dart支持断言逻辑,即assert断言使用方法assert(a==b),若a不等于b则打断当前程序的执行,在代码调试中非常有用的一种代码编程方式。
    • dart支持list列表,但是dart中的list列表等同于java中的数组,构造到赋值都和java数组相似即:
      list list = [1,2,3];list list = new list;list[0] = 3;list也提供了一系列的api用于list的操作处理。
    • dart也支持map 键值对数据结构,不过和list列表相似,也是和java中的数组相似,构造和赋值类似,即:map map = ['aa':'value','bb':'value'],
      map map = new map();map['key'] = "",map['value'] = "";
    • dart 提供了关键字in用于遍历list获取每一个item,kotlin和grrove也存在相同的用法。
  • dart语句和函数

    • dart的条件语句和java类似也是if/else语句,switch语句,三目运算符即a>b? c:d。
    • dart条件语句的特殊语法:String name2 = name?? "哈哈" 表示name的值赋值给name2,若name为空则将默认值哈哈赋值给name2. ??表示提供对应的默认值。
    • dart 循环语句:for/while/do while 三种方式,使用关键字in遍历list和for遍历list一致,双循环和java一致,可以使用关键字break打断循环。此外dart存在两个特殊的关键字outerlooper和innerlooper指示双循环的时候的内循环和外循环,后续再补充。
    • dart取商运算即~/ 比如12~/7 = 1(取整int)
    • 级联运算符.. 类似于java的链式api调用。
    • as is is!:类似于java的类型校验,as:属于某种类型,is/is!: 对象具有指定的类型前面返回true后面返回FALSE。
  • Dart的函数语法:

    • 函数包含返回值+函数名+参数,和java类似但是Dart没有权限的关键字,类,属性,函数只有两种权限默认和私有,私有关键字依赖于_即:class _A表示class a是一个私有类。
    • Dart函数可以声明返回值也可以不声明返回值,和java不同的是dart的函数有着默认的返回值,即声明了返回值没有返回在编译阶段是不报错的,java不可以,但是默认返回值是空,所以dart中判空是常规必须的操作。
    • Dart的函数参数特性:
      • 函数声明了参数但是在函数调用的时候可以不传参数甚至一个参数都不传递,但是需要注意的是传递参数的顺序和约定的顺序保持一致。
      • 必传参数:使用关键字@required标识参数说明函数调用的时候的参数必须传递。
      • []标识符标识的参数为可选参数类似于java中的可选参数,java使用....标识,函数调用的时候可传递可不传递。
      • 函数参数过多时,在编码阶段比较混乱容易出问题,java依赖于代码提示和注释,dart可以在函数调用的时候指明参数的名字,比如height参数调用时可以使用height:20(特别注意不是等号是:)
      • 函数的参数在声明的时候可以指定默认值,即
        void xxxx(int x = 21,int y = 34){}
      • 函数可以作为参数传递,此为dart特性,java思维比较容易混淆,比如:
beiDiaoYongFun(String hehe){  
print("asdfadfasdfasdfas11111111111111111111111"+hehe);
}
diaoYong(action){  
action("8797987979797");
}
void main() {  
diaoYong(beiDiaoYongFun);
}

结果:


函数作为参数调用

和java不同虽然java也可以调用的方法作为参数,但是java是将方法值作为后续的方法的参数,dart是执行函数的语句,比如list.foreach(prient)的执行顺序是先遍历list然后将list的每一个item打印出来。

  • 承接上面的参数:
    * 函数可以作为变量。
    * dart引入了箭头函数(=>)kotlin也存在,即使用箭头函数可以替代函数的大括号,有返回值的函数也可以直接返回且不需要return关键字。

  • dart的异常抓获和java类似,try catch,finally,不同的是提供了on关键字,on关键字可以指明异常是否等于给定的异常,类似于java的catch中使用if语句校验异常类型。

  • dart中类和java中的类的语法基本一致,需要注意的就是dart中的类的构造函数:类有默认构造函数,也可以自定义构造函数,但是构造函数的自定义和java不一样,(或许dart中函数名不能多态,待验证),dart中的类仅可以存在一个和类名相同的构造方法,dart的自定义构造方法格式为:类名.函数名{},这样在外面就可以调用类对象对应的构造方法。

  • dart中类属性存在默认的set和get方法,也可以自定义,使用set和get两个关键字,平时使用感觉没有意义,还有类的继承方式和java一致。

    • dart中存在继承,接口实现,继承和java一样单继承,类存在抽象类,子类覆写父类的api方法需要注解@override标识。
    • dart不存在interface关键字,任何一个类都能够被实现,方法都能够被覆写,同样使用注解@override标识即可。
    • dart中除了继承和接口实现外还存在混合,实现上使用关键字with标识,混合标识着当前类可以拿到混合类的api方法使用或者覆写,混合支持多个类混合。
    • 三者的优先级:混合>继承>接口实现
  • dart支持泛型且泛型的定义和java类似。

参考文章:
dart官网学习
dart中国

相关文章

  • Dart语法解析

    1.dart整理: 使用场景:跨平台/web/服务器或者脚本 SDK的安装和升级:dart sdk安装和升级 ma...

  • dart语法7-泛型

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法8-库

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法10-生成器

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法9-异步

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法11

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法2-内置类型

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法1

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法3-函数

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法4-操作符

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

网友评论

      本文标题:Dart语法解析

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