我想在不输入R.
我试图将所有功能添加到全局范围但是它不起作用这是我的尝试
const R = require('ramda'); // R is an object containing lots of functions
for(let x in R) {
global.x = x;
}
另外,我想知道如何使用Ramda库本身。
答案 0 :(得分:1)
确保设置名为x的属性,而不是x属性:
另外,请务必将NULL
的值分配回来,而不是属性名称R[x]
x
你也可以尝试迭代getOwnPropertyNames:
global[x] = R[x];
或者,如果适用,只需将您需要的属性解构为范围:
for (const prop of Object.getOwnPropertyNames(R)) {
global[prop] = R[prop]
}
答案 1 :(得分:1)
根据评论,虽然我不同意输入额外的2个字符可能被称为大惊小怪,但这是你的感受。
就像@ uber5001提到的解构技术一样,它只是一种方式,但这意味着你首先需要将require
整个ramda函数转换为R
然后检索你需要的函数。
您还可以require
仅使用所需的功能:
const uniq = require('ramda/src/uniq')
const zip = require('ramda/src/zip')
// and so on
HTH
答案 2 :(得分:1)
将Ramda的所有功能设置为全局变量可能存在风险。 Ramda有很多功能,其中一些可能会覆盖你现有的全局变量。更好的做法(因为你仍然可以使用影子名称变量,这仍然被认为是一种不好的做法)是with
语句,它会破坏对象的所有属性,而不会覆盖外部范围变量。
with(R) {
pipe(
map(x => x ** 2),
filter(x => x > 24)
)([3, 4, 5, 6]); // => [25, 36]
}
请注意,在严格模式下禁用with语句。