Flutter入门Dart语言:函数入门指南

Posted 小雨青年

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flutter入门Dart语言:函数入门指南相关的知识,希望对你有一定的参考价值。

文章目录

一、概述

Dart 是一门的面向对象语言,因此函数也是对象。

函数可以像其他任何对象一样,被赋值给变量或作为另一个函数的参数使用。而且,Dart 的类实例也可以像调用函数一样使用。

Dart 还支持函数表达式,也就是匿名函数或 Lambda 表达式。这类函数可以和命名函数一样被赋值给变量或作为参数使用。在 Dart 中函数是一等公民,可以像其他对象一样被处理。

二、函数基础

1.定义函数

函数的名称应该具有描述性,以便其他人能够快速地理解它的功能。函数名可以由多个单词组成,每个单词之间使用下划线 _ 进行分割。函数名不能以数字开头,并且不应该包含空格或特殊字符。

函数的参数是在函数名后面的括号中指定的。参数用逗号分隔,可以没有参数或有多个参数。参数包括参数名称和参数类型,类型用冒号 : 分隔。在函数体内,可以使用参数名称引用参数值。

Dart 中的函数可以选择性地返回值。如果函数需要返回一个值,则需要在函数体内使用 return 语句返回该值。返回类型必须与函数定义中指定的返回类型相同或兼容。

int sum(int a, int b) 
  return a + b;


2.调用函数

在 Dart 中,要调用函数,需要使用函数名和参数列表。如果函数有返回值,可以将返回值赋值给变量或直接使用。

void main() 
  int a = 10;
  int b = 20;
  int result = sum(a, b);
  print(result); // 输出:30


在这个示例中,首先定义了两个整数变量 ab,并将它们的值分别设置为 1020。接着,调用 sum 函数并将返回值赋值给 result 变量。最后,使用 print 函数输出 result 变量的值。

3.函数参数

在 Dart 中,函数可以接受零个或多个参数。函数参数可以是必选的,也可以是可选的。

必选参数是指在调用函数时必须传递的参数,否则编译器会报错。Dart 中函数的参数默认都是必选的,如果想要定义可选参数,需要使用[]来标记参数。

可选参数是指在调用函数时可以省略的参数。Dart 中有两种可选参数:命名可选参数和位置可选参数。

  • 命名可选参数是指在调用函数时可以使用参数名来指定参数的值。在函数参数列表中,使用 将参数括起来来标记命名可选参数。
  • 位置可选参数是指在调用函数时可以省略参数名的可选参数。在函数参数列表中,使用 [] 将参数括起来来标记位置可选参数。
int test(int a, int b = 1, int c = 10) 
  return a - b - c;


void main() 
  int result1 = test(10, c: 30);
  int result2 = test(10, b: 20, c: 30);
  int result3 = test(10);

  print(result1);  
  print(result2);  
  print(result3);  


这是个命名可选参数的例子,执行效果如下。

void test(int a, [int b = 0, int c = 0]) 
  print('a: $a, b: $b, c: $c');


void main() 
  test(1);           
  test(2, 3);       
  test(4, 5, 6);     

这是个位置可选参数的例子,执行效果如下。

在上面的例子中,函数 test 有三个参数,其中 bc 是位置可选参数,使用方括号 [] 括起来。在函数调用时,如果不提供可选参数,则会使用默认值,例如 test(1) 的调用结果为 a: 1, b: 0, c: 0,其中 bc 的值都是默认值 0。

在使用可选参数时,有几个需要注意的事项:

  • 必选参数必须放在可选参数前面。
  • 可选参数可以有默认值,但是必选参数不可以有默认值。
  • 如果函数既有命名可选参数又有位置可选参数,那么位置可选参数必须在命名可选参数前面。
  • 如果函数有多个命名可选参数,那么在调用函数时必须使用参数名来指定参数值。

4.函数返回值

函数的返回值指的是函数执行后所返回的结果。在Dart中,可以使用return关键字将一个值返回给函数的调用者。

上面的例子中,test返回的就是类型为int,表示它将返回一个整数值。

函数的返回值可以是任何类型,包括Dart内置类型和用户定义的自定义类型。下面是一个使用自定义类型作为返回值的示例:

class Morty 
  final String name;
  final int age;

  Morty(this.name, this.age);


Morty createMorty(String name, int age) 
  if (name.isEmpty || age < 0) 
    // 返回一个默认的Morty对象
    return Morty('', 0);
  
  // 返回一个新的Morty对象
  return Morty(name, age);


void main() 
  Morty morty1 = createMorty('Morty Smith', 14);
  Morty morty2 = createMorty('', -5);

  print('Morty 1: $morty1.name, $morty1.age');
  print('Morty 2: $morty2.name, $morty2.age');

输出结果为如下所示。

上面的代码定义了一个名为createMorty的函数,该函数接受两个参数,分别是Morty的名字和年龄,并返回一个Morty类型的对象。

在函数中,我们通过Morty类的构造函数来创建一个新的Morty对象,然后将传入的参数分别赋值给该对象的name和age属性。

在调用createMorty函数时,我们传入了"Morty Smith"和14这两个参数。由于该函数返回一个Morty类型的对象,我们将其赋值给了变量morty,然后通过print函数将morty打印出来,从而显示出该对象的name和age属性值。

需要注意的是,在函数中,如果Morty类的构造函数参数被声明为required,则在创建Morty对象时必须传入相应的参数值。同时,由于在该示例中我们将Morty类的属性都声明为非空类型,因此不能返回空对象,否则会导致编译错误

三、总结

这次我们学习了函数的基本用法,包括:

  • 定义函数;
  • 调用函数;
  • 给函数传参;
  • 函数的返回值。

通过这些,我们就可以在 dartpad 上练习dart的基础语法了。

以上是关于Flutter入门Dart语言:函数入门指南的主要内容,如果未能解决你的问题,请参考以下文章

Flutter--实战Dart 语言快速入门

『Flutter开发实战』十分钟入门Dart语言

Flutter入门:dart基础

Flutter入门Dart语言:简单易懂的变量指南

Flutter入门Dart语言:初步了解内建类型

Flutter入门Dart语言:控制流语句的基本用法