对于具有多个参数的函数,我们可以仅部分应用一两个参数,返回一个采用其余参数的新函数吗?
使用 Ramda 的 JavaScript 示例
function buildUri (scheme, domain, path) {
return `${scheme}://${domain}/${path}`
}
const buildHttpsUri = R.partial(buildUri, ['https']);
const twitterFavicon = buildHttpsUri('twitter.com', 'favicon.ico');
您可以转发到另一个功能
String buildUri (String scheme, String domain, String path) {
return `${scheme}://${domain}/${path}`
}
String buildHttpsUri(String domain, String path) => buildUri('https', domain, path);
OP 问题的答案是:NO,部分应用程序和柯里化函数不是 Dart 语言支持的功能。 Günter Zöchbauer 的答案提供了一个可能适合您的解决方法。
有一个名为 function 的包,可以用来做你想做的事。
import 'package:functional/functional.dart';
function buildUri (scheme, domain, path) {
return `${scheme}://${domain}/${path}`
}
const buildHttpsUri = buildUri % 'https';
const twitterFavicon = buildHttpsUri('twitter.com', 'favicon.ico');