我的问题很简单。我最近从Ramda开始,我喜欢它,因为它是纯粹的功能。我对 concat 函数有一点问题,因为它只接受两个列表作为参数。因此,如果我需要连接三个或更多列表,我必须链接这样的函数:concat(list1, concat(list2, concat(list3, list4)))
(对于四个列表串联)。有没有更好的方法来做到这一点,我不知道?感谢。
答案 0 :(得分:1)
我没有使用过Ramda库,但您似乎是在我在您发布的链接中阅读的文档中的node.js中使用它。在这种情况下,您可以在arguments
中的函数中使用node.js
变量来编写自己的concat
函数,该函数将n个列表作为输入。 arguments
变量本质上是输入函数的参数数组。
function myConcat () {
for (var i = 1; i < arguments.length; i++) {
concat(arguments[0], arguments[i]);
}
return arguments[0];
};
但是,在这种情况下,您可能需要将其称为:
list1 = myConcat(list1, list2, list3, list4);
答案 1 :(得分:1)
根据您正在连接的内容和您的环境(需要ES2015),您可以这样做:
const newList = [...list1, ...list2, ...list3];
否则,你会遇到多次调用concat的问题,尽管你可以用compose使它变得更清晰:
const newList = compose(concat(list1), concat(list2), concat(list4))(list3);
确实你想要映射或更好,减少:
const newList = reduce((acc, x) => concat(acc, x), [list3], [list4, list2, list1]);
或内部reduce函数可能如下所示:
(acc, x) => [...acc, ...x]
答案 2 :(得分:1)
将R.unnest
与R.unapply
一起使用可让您将函数称为可变参数:
const unnestAll = R.unapply(R.unnest)
unnestAll([1, 2], [3, 4], [5, 6, 7]) //=> [1, 2, 3, 4, 5, 6, 7]
略有不同
答案 3 :(得分:1)
您可以通过以下方式使用override func viewWillDisappear(_ animated: Bool) {
delegate?.sendBalVariable(balVariables)
}
方法:
import PackageDescription
let package = Package(
name: "WebMIDIKitDemo",
dependencies: [
.Package(url: "https://github.com/adamnemecek/WebMIDIKit.git", majorVersion: 1)
]
)
从技术上讲,您传递了一个包含所有列表的数组。然后,您只需将它们全部展平为单个阵列即可。
如果您的某些列表可能包含列表本身,请不要使用此方法-它们也会被展平。