Dart速通(三)-函数和运算符

348 阅读2分钟

函数

Dart 是一个面向对象语言,所以函数也是对象,函数属于Function对象。 函数可以像参数一样传递给其他函数,这样便于做回调处理。 如下示例为判断两字符是否相等:

//判断两个字符是否相等
bool equal(String str1,String str2){
    return str1 == str2;
}

可选参数

将参数使用中括号[]括起来,用来表明是可选位置参数。例如,总共传入了三个参数,其中namesex是必需传入的参数,from参数可以不传,代码如下:

//获取用户信息
String getUserInfo(String name,String sex,[String from]){
    var info = `$name的性别是$sex`;
    if(from!=null){
        info = '$info来自 $from';
    }
    return info;
}
void test(){
    print(getUserInfo('小王','男'));
}

调用上面的test方法可以输出“小王的性别是男”,但是不会输出来自哪里。

参数默认值

如果参数制定了默认值,当不传入值时,函数里会使用这个默认值。如果传入了值,则用传入的值取代默认值。通常参数默认值为null。改造上面的getUserInfo方法,给from赋上默认值,如下:

//获取用户信息
String getUserInfo(String name,String sex,[String from = '中国']){
    var info = `$name的性别是$sex`;
    if(from!=null){
        info = '$info来自 $from';
    }
    return info;
}
void test(){
    print(getUserInfo('小王','男'));
}

调用上面的test方法可以输出“小王的性别是男来自中国”

main函数

Flutter应用程序必须要有一个main函数,和其他语言一样作为程序的入口函数。下面的代码表示应用要启动MyApp类:

void main()=>runApp(MyApp());

函数返回值

在Dart语言中,函数的返回值有如下特点

  • 所有函数都会有返回值。
  • 如果没有指定函数返回值,则默认的返回值是null
  • 没有返回值的函数,系统会在最后添加隐式的return语局。

运算符

Dart支持的运算符基本和Java运算符一致,就不一一举例说明了,下面是完整操作符表

完整操作符表

描述 运算符
一元后缀 expr++expr--().?.
一元前缀 -expr!expr~expr++expr--expr
乘法类型 */%~/
加法类型 +-
位移运算 >><<
并且位运算 &
异或位运算 ^
或位运算 |
关系和类型测试 >=<=><asisis!
等式 ==!=
逻辑并且 &&
逻辑或 ||
条件 expr1 ?expr2 : expr3
赋值 =*=/=~-%=+=-=<<=>>=&=^=/=??=

以前没见过的运算符

??=运算符

仅在变量为null时赋值,使用??=运算符,如下所示:

//赋值给a
a = value;
//如果b为空,则将值分配给b;否则,b保持不变。
b ??=value;