Dart语法之可选参数{ } [ ]

Dart方法有两种类型的参数:必需的和可选的。必需的我们一般都知道,这里主要分析可选参数。

如果同时包含可选参数和必需参数,必需的参数在参数列表前面, 可选数在后面。

可选参数可以有一个默认值,当默认值在调用者没有指定值时使用。这一点和kotlin的语法很像。其次可选参数具体可分为:

  • Optional named parameters(可选命名参数)
  • Optional positional parameters(可选位置参数)

可选命名参数
在方法参数中,使用"{}"包围的参数属于可选命名参数,比如

  void _buildThree(int num, {String name, int range}) {
    
  }

可以为可选参数添加默认值,比如:

  void _buildThree(int num, {String name, int range = 10}) {

  }

调用包含可选命名参数的方法时,需要使用paramName:value的形式指定为哪个可选参数赋值,比如:

_buildThree(10,range: 1);

可选位置参数
在方法参数中,使用"[]"包围的参数属于可选位置参数,比如

  void _buildHouse(int num, [String where, int range]) {

  }
  
  void _buildHouseAndDefaultValue(int num, [String where = 'Shanghai', int range]) {

  }

调用包含可选位置参数的方法时,无需使用paramName:value的形式,因为 可选位置参数是位置,如果想指定某个位置上的参数值,则必须前面位置的已经有值,即使前面的值存在默认值。 比如:

_buildHouse(10,10); //不可行的

_buildHouse(10,'shenzhen',10); //可行的

_buildHouseAndDefaultValue(10,10); //不可行的

_buildHouseAndDefaultValue(10,'shenzhen',10); //可行的

这里特意使用两个不同类型的可选参数作为示例,如果前后可选参数为相同类型,则会出现异常结果,并且只有在发生后才会注意到。所以这一点要特别注意。比如一下示例,假如本意是想赋值给age,但结果将会差强人意

void _buildHouse(int num, [int range , int age]) {
  print('range :  $range  age : $age');
}

void main() {
  _buildHouse(10,10);
}

输出:

range :  10  age : null
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值