是否可以在Dart中使用部分应用(部分/应用/固定参数)

问题描述 投票:0回答:2

对于具有多个参数的函数,我们可以仅部分应用一两个参数,返回一个采用其余参数的新函数吗?

使用 Ramda 的 JavaScript 示例

function buildUri (scheme, domain, path) {
  return `${scheme}://${domain}/${path}`
}

const buildHttpsUri = R.partial(buildUri, ['https']);

const twitterFavicon = buildHttpsUri('twitter.com', 'favicon.ico');
functional-programming dart partial-application
2个回答
5
投票

您可以转发到另一个功能

String buildUri (String scheme, String domain, String path) {
  return `${scheme}://${domain}/${path}`
}

String buildHttpsUri(String domain, String path) => buildUri('https', domain, path);

0
投票

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');
© www.soinside.com 2019 - 2024. All rights reserved.