2.Dart入门-函数


Dart是一种真正的面向对象语言,所以即使函数也是对象,具有类型和功能。这意味着函数可以分配给变量或作为参数传递给其他函数。

定义函数的三种方法

1.明确的返回值和参数类型

String getName(String name){
  return "${name} is the name";
}
  1. dynamic 方式 自动判断返回值和参数的类型
    省略了类型,这个函数仍然可以工作:
getName2( name){
  return "${name} is the name";
}
  1. => 箭头函数
    对于只包含一个表达式的函数,可以使用简写语法
String getName3(String name) => "${name} is the name";

参数的定义

  1. 必传参数
    表明这个参数在函数调用的时候是必须传的
void getNum(num number){}

2.可选参数
在定义函数时,使用{param1,param2,…}来指定命名参数,比如:

num getNum2({num num1 , num num2}) => (num1 ?? 0)+ (num2 ?? 0); // 其中的两个参数可传可不传

//函数调用
print(getNum2(num2: 1));//必须带上参数名

使用@required说明它是一个必传的参数

const Scrollbar({Key key, @required Widget child})//第二个参数必须传递

3.可选的位置参数
使用[param1,param2,…]来表示

num getNum3([num num1 , num num2]) => (num1 ?? 0)+ (num2 ?? 0);
   print(getNum3(1,2)); // 可以不用参数名,第一个参数就是num1 第二个就是num2

4.默认参数值 :
参数如果没有传递,就使用默认的值

num getNum4([num num1 = 10 , num num2 = 10]) => (num1 ?? 0)+ (num2 ?? 0);
//print(getNum4(1));//  11

函数

main()函数

每个应用程序都必须有一个顶级的main()函数,它作为应用程序的入口点。main()函数返回void,并有一个可选的列表参数作为参数


将函数传递给另一个函数

void addOne(int num) => print(num + 1);
var arr = [0,1,2,3,];
arr.forEach(addOne);

为变量分配函数

var name = (msg) => '!!! ${msg.toUpperCase()} !!!';
print(name("yh")); //!!! YH !!!

匿名函数

说的简单一点就是没有名字的函数

sayHello(void temp(String str)){
  temp('hello');
}
sayHello((str) { 
  print(str.toUpperCase());//HELLO 这里相当于temp函数体的内容
});

/*
void forEach(void f(E element)) {
    for (E element in this) f(element);
  }
*/ 

闭包函数

: 是一个方法对象,不论对象在何处被调用,改对象都能访问自己作用域内的变量

count(int number){
  var res = number + 1;
  return (temp){
    print(res + temp);
  };
}

var func = count(1);
func(123); //123+2 =  125

返回值

函数都有返回值,如果没有指定return , 会隐式的返回一个null

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值