dart - 如何从使用 Function 创建的方法返回 int 值?
问题描述
说,我有:
int Function(int x, int y) add() {
return x + y; // Error
}
PS:我知道我可以使用
int add(int x, int y) => x + y;
解决方案
您返回的不是函数,而是x + y
. 你需要这样做:
int Function(int x, int y) add = (x, y) {
return x + y;
};
可以像普通函数一样使用:
print(add(1,2)); // 3
这将为add
一个函数创建一个变量,该函数接受两个int
参数并返回总和。
或者,如果您想要一个返回方法的方法:
int Function(int x, int y) add() {
return (x, y) {
return x + y;
};
}
使用如下:
print(add()(1,2)); // 3
在最后一个示例中,您可以执行类似的操作来根据输入构造一个函数,例如有一些您想要设置一次的默认参数:
int Function(int x, int y) add(int alwaysAdd) {
return (x, y) {
return x + y + alwaysAdd;
};
}
void main() {
final addMethod = add(10);
print(addMethod(1,2)); // 13
print(addMethod(5,5)); // 20
}
推荐阅读
- php - 软件包 laravel/ui 版本的 PHP 要求与您的 PHP 版本 (5.6.40) 不兼容
- sql - 如何在 afterSubmit 事件中添加 180 天以在 suiteflow 中进行转换?
- javascript - 为什么Argon模板中有这么多相同的路线?
- python-3.x - 使用 Scrapy 提取维基百科链接
- image - 为什么不总是使用本机延迟加载(图像属性加载=“lazy”)?
- arrays - Numpy:在其他布尔数组的“真”上覆盖布尔数组
- django - 如何在 django 通知中使用动作对象和目标
- amazon-s3 - 无法使用无服务器框架将图像上传到 s3,但它可以离线工作(缓冲区问题)
- r - 加快重叠加性模型 (mgcv) 的估计
- ravendb - RavenDb Let's encrypt 证书设置在 Azure 上失败