Flutter之Dart语言的应用02:函数的应用

138 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第30天,点击查看活动详情

和JavaScript的区别

Dart语言规范已被纳入BCMA Script体系,但是和js语言是有差异的会增加一些记忆的成本,并且如果一直在这两种语言之前切换开发的话,有可能会导致写法混乱

函数方法

Dart中的函数也是和javascript一样,是支持函数嵌套,,包括自执行函数、闭包等,它也是生命在Main()函数中,调用时可以在最外层调用,注意这也是有作用域的

temp()

main(){
    temp(){}
}

或者函数定义在最外层,在main函数内调用

传参

函数传参一旦定义好参数后,调用时则是必填项,缺一不可,而且顺序要正确,如果顺序错误会报错

temp(name,age){
    print(name,age)
}
main(){
    temp('小明',15)
}

如果函数需要返回值,那么需要在函数名称前加上返回类型void

void temp(name,age){
    print(name,age)
}
  • 可选参数的定义方式 如果少穿参数,则可以定义默认值为null,或把没传过来的参数统一放到中括号内。可以理解为允许参数少传
void temp(name,age=null,[num,hello]){
    print(name,age)
}

注意! 虽然是少传,但仍然要遵守传参顺序

参数定义严格的类型之后,那么少穿的参数会报错,原因:虽然是可选参数,Dart2.0提倡的是在编译前,把所有的错误解决完成

void temp(name,int age=null,[int num,hello]){}

思路:一旦定义为严格类型之后,所传的参数不允许为空!俗称空安全

箭头函数

js不一样的是,它的箭头函数只能写一行,它实际上是一个表达式,并且不用担心this问题,设计初衷是为了让代码更加简洁明了

temp.map(valuue=>prigin(value))

异步

异步分为AsyncAwaitFulure类型,不同点:类型名称是写在方法名称后面,异步同步必须同时存在,

str async(){
  String tes = await foo()
}
foo(){
 return '33'
}

如果想要结果以Promise类型返回,那么需要在调用函数后面加async异步类型,而在Dart中是Fulure类型,在函数名称前加上

Fulure foo async(){
 return '33'
}