gpt4 book ai didi

javascript - ramda.js 中带有模板字符串的 Pointfree 风格

转载 作者:行者123 更新时间:2023-12-01 01:48:57 26 4
gpt4 key购买 nike

我在 ramda.js 中编写 pointfree 风格的函数时遇到问题,想知道是否有人可以帮助我。 getEnv 函数读取环境变量,如果找不到,则将其记录到控制台。

这是我的代码

const env = name => R.path(['env', name], process);

const getEnv = name => R.pipe(
env,
R.when(R.isNil, () => log(`Missing env "${name}"`))
)(name);

console.log(getEnv('myenv'))

我想删除 getEnv 函数的 name 参数(如果可能的话,也删除 env 函数),但不要这样做不知道该怎么做。

最佳答案

函数 getEnv 的作用超出了其应有的范围。它实际上返回路径的内容记录验证消息

将其拆分为两个独立的函数。在下面的示例中,我将其称为 findPathvalidatePath,它们通常适用于所有路径。我已将 validatePath 包装到另一个名为 validateEnvPath 的函数中,该函数直接搜索“env”

要摆脱env,您可以执行以下操作:R.flip (R.curry (R.path))。这将先对函数进行柯里化(Currying),然后再对参数进行翻转,这样您就可以告诉函数您要首先查询的位置

const process = {env: {myenv: ':)'}}

const path = R.flip(R.curry(R.path))

const findPathInProcess = R.pipe(
path (process),
R.ifElse(
R.isNil,
R.always(undefined),
R.identity
)
)

const validatePath = path =>
validationPathResponse (findPathInProcess( path )) (`can't find something under [${path}]`)

const validateEnvPath = path =>
validatePath (buildPath (['env']) (path))

const buildPath = xs => x =>
xs.concat(x)

const validationPathResponse = response => errorMessage =>
response
? response
: errorMessage


console.log(validatePath(['env', 'myenv']))
console.log(validateEnvPath('myenv'))
console.log(validateEnvPath('yourenv'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.25.0/ramda.min.js"></script>

关于javascript - ramda.js 中带有模板字符串的 Pointfree 风格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51740708/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com