前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Dart-函数(下) 命名可选参数

Dart-函数(下) 命名可选参数

原创
作者头像
杨不易呀
修改2023-12-21 00:37:47
3261
修改2023-12-21 00:37:47
举报
文章被收录于专栏:Flutter18杨不易呀Flutter18

前言

  • 在前一篇 Dart-函数(上) 中介绍到了一些关于函数的注意点
  • 这篇文章详细的介绍一下注意点中的细节,一个一个来

正文

命名可选参数

  • 由于 Dart 是静态语言/强类型语言,所以在 Dart 中,函数的参数是必须要传的
  • 先来定义一个来看看为什么
代码语言:js
复制
void printPerson({String name, int age}) {
  print("name=$name, age=$age");
}

void main() {
  printPerson(name: "张三");
}

首先定义一个命名可选参数有两个参数的函数,然后在 main 函数中调用,只传入了一个参数,这时候会报错:

  • 报错信息提示没有初始值,本来默认会赋值为 null, 但是 null 和我们指定的类型不是一个类型,所以报错
  • 解决方法就是给参数指定一个默认值,这样就不会报错了
代码语言:js
复制
void printPerson({String name = "", int age = 18}) {
  print("name=$name, age=$age");
}

void main() {
  printPerson(name: "张三");
}
  • 如上是定义命名可选参数的时候指定了类型,如果不指定类型,就是动态类型,所以可以默认值为 null,所以不会报错
代码语言:js
复制
void printPerson({name, age}) {
  print("name=$name, age=$age");
}

void main() {
  printPerson(name: "张三");
}
  • 调用的时候,如果没有传递命名可选参数,那么就是默认值
代码语言:js
复制
void printPerson({name, age = 18}) {
  print("name=$name, age=$age");
}

void main() {
  printPerson(name: "张三");
}

输出结果:

代码语言:tex
复制
name=张三, age=18
  • 如果要给可选命名参数传值,必须明确指定名称,传递参数的顺序可以任意
代码语言:js
复制
void printPerson({name, age = 18}) {
  print("name=$name, age=$age");
}

void main() {
  printPerson(age: 20, name: "张三");
}

位置可选参数

  • 位置可选参数和命名可选参数的区别就是,位置可选参数不需要指定名称,直接传值就可以了
  • 位置可选参数的定义方式和命名可选参数的定义方式不一样,位置可选参数是用中括号包裹的
代码语言:js
复制
void printPerson(String name, [age]) {
  print("name=$name, age=$age");
}

void main() {
  printPerson("张三", 18);
}
  • 位置可选参数如果不指定类型,那么默认就是动态类型
  • 位置可选参数如果指定类型,就必须指定默认值,否则会报错
代码语言:js
复制
void printPerson(String name, [int age = 18, gender]) {
  print("name=$name, age=$age, gender=$gender");
}

void main() {
  printPerson("张三", 25, "男");
}
  • 位置可选参数的调用方式和命名可选参数的调用方式不一样,位置可选参数是按照顺序传递的,是不能够打乱顺序的

最后

本期结束咱们下次再见👋~

🌊 关注我不迷路,如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。大家点赞支持一下哟~ 💗

我正在参与2023腾讯技术创作特训营第四期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 正文
    • 命名可选参数
      • 位置可选参数
      • 最后
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档