Dart-函数

Dart-函数

参考:

函数与其它语言类似

bool isNoble(int atomicNumber) {
  return _nobleGases[atomicNumber] != null;
}

省略了类型声明,函数依旧是可以正常使用的:

isNoble(atomicNumber) {
  return _nobleGases[atomicNumber] != null;
}

如果函数中只有一句表达式,可以使用简写语法:

bool isNoble(int atomicNumber) => _nobleGases[atomicNumber] != null;

=> expr 语法是 { return expr; } 的简写。 => 符号 有时也被称为 箭头 语法。

所有函数都会返回一个值。 如果没有明确指定返回值, 函数体会被隐式的添加 return null; 语句。

返回类型也可以是dynamic

void main() {

  showOutput(square(5.0));

  print(square.runtimeType);//(dynamic) => dynamic
  
}

dynamic square(var num) {
  return num * num;
}

void showOutput(var msg) {
  print(msg);
}

匿名函数

匿名函数, 有时候也被称为 lambda 或者 closure 。

([[Type] param1[,]]) {
  codeBlock;
};

例如,下面的遍历

var list = ['apples', 'bananas', 'oranges'];
list.forEach((item) {
  print('${list.indexOf(item)}: $item');
});

如果函数只有一条语句, 可以使用箭头简写。

list.forEach(
    (item) => print('${list.indexOf(item)}: $item'));

可选参数

可选参数可以是命名参数或者位置参数,但一个参数只能选择其中一种方式修饰。

Named parameters

如下的方法:

dynamic sum(var num1, var num2) => num1 + num2;

可以这样调用

void main() {
  print(sum(2, 2));//4
}

但如果使用 {param1, param2, …},指定了命名参数,上面的形式,将会提示错误
errror
error
需要使用如下的调用形式

void main() {
  print(sum(num1: 2, num2: 4));//6
}

混合使用位置参数和命名参数

void main() {
  print(sum(2, num2: 4));//6
}

dynamic sum(var num1, {var num2}) => num1 + num2;

需要注意的是,命名参数是可选的,如下的形式,写的时候,并不会出错
01
但在运行的时候,会提示如下的错误

02
原因是:在函数中使用到了num2,但是却没有提供这个参数,可做如下的修改

02

默认参数值

上面的问题,还可以通过,提供默认参数值来解决

void main() {
  print(sum(2));//2
  print(sum(2, num2: 10));//12
}

dynamic sum(var num1, {var num2 = 0}) => num1 + num2;

位置可选参数

将参数放到 [] 中来标记参数是可选的:

String say(String from, String msg, [String device]) {
  var result = '$from says $msg';
  if (device != null) {
    result = '$result with a $device';
  }
  return result;
}

调用

assert(say('Bob', 'Howdy') == 'Bob says Howdy');
好的,我可以举一个简单的例子来说明。假设你正在开发一个 Flutter 应用程序,需要使用一个 Python 库来进行数据处理。你可以使用 dart-py-interop 插件来实现这个功能。 首先,你需要在你的 Flutter 项目中添加 dart-py-interop 插件的依赖,可以在 `pubspec.yaml` 文件中添加以下代码: ``` dependencies: dart_py_interop: ^0.1.0 ``` 然后,你需要创建一个 Python 脚本,使用你需要的 Python 库来处理数据。例如,假设你需要使用 Pandas 库来处理一个 CSV 文件,你可以编写以下 Python 脚本: ```python import pandas as pd def process_csv(file_path): data = pd.read_csv(file_path) # 对数据进行处理 return processed_data ``` 接下来,你需要在 Flutter 代码中调用这个 Python 脚本。你可以使用 dart-py-interop 插件提供的 `PythonInterop` 类来实现这个功能。例如,你可以编写以下代码: ```dart import 'package:dart_py_interop/dart_py_interop.dart'; Future<List<dynamic>> processCsv(String filePath) async { final python = PythonInterop(); await python.loadModuleFromScript('process_csv', 'process_csv.py'); final result = await python.callFunction( 'process_csv', arguments: [filePath], ); python.dispose(); return result; } ``` 在这个代码中,我们使用 `PythonInterop` 类加载了一个名为 `process_csv` 的 Python 模块,并且调用了它的 `process_csv` 函数,并将 `filePath` 参数传递给它。最后,我们返回从 Python 中返回的结果。 使用 dart-py-interop 插件,你可以轻松地在 Flutter 应用程序中调用 Python 代码,实现更加复杂的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值