Javascript ramda.js中带有模板字符串的无点样式
我在ramda.js中编写一个无点风格的函数时遇到了问题,我想知道是否有人能帮我解决这个问题。Javascript ramda.js中带有模板字符串的无点样式,javascript,functional-programming,ramda.js,pointfree,Javascript,Functional Programming,Ramda.js,Pointfree,我在ramda.js中编写一个无点风格的函数时遇到了问题,我想知道是否有人能帮我解决这个问题。getEnv函数读取一个env变量,如果找不到,则记录到控制台 这是我的密码 const env = name => R.path(['env', name], process); const getEnv = name => R.pipe( env, R.when(R.isNil, () => log(`Missing env "${name}"`)) )(name);
getEnv
函数读取一个env变量,如果找不到,则记录到控制台
这是我的密码
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
的功能超出了它应该做的。它实际返回路径的内容或记录验证消息
将其拆分为两个单独的函数。在下面的示例中,我将其称为findPath
和validatePath
,它通常适用于所有路径。我将validatePath
包装到另一个名为validateEnvPath
的函数中,该函数直接搜索“env”
要摆脱env
您可以执行以下操作:R.flip(R.curry(R.path))
。这将改变函数curry,然后改变参数,这样您就可以告诉函数首先要查询的位置
const进程={env:{myenv:':':')}
常量路径=R.flip(R.curry(R.path))
const findPathInProcess=R.pipe(
路径(过程),
R.ifElse(
R.isNil,
R.始终(未定义),
R.身份
)
)
const validatePath=路径=>
validationPathResponse(findPathInProcess(path))(`在[${path}]下找不到内容)`)
const validateEnvPath=path=>
validatePath(构建路径(['env'])(路径))
const buildPath=xs=>x=>
xs.concat(x)
const validationPathResponse=response=>errorMessage=>
响应
? 响应
:错误消息
log(validatePath(['env','myenv']))
log(validateEnvPath('myenv'))
log(validateEnvPath('yourenv'))
函数getEnv
做的比它应该做的更多。它实际返回路径的内容或记录验证消息
将其拆分为两个单独的函数。在下面的示例中,我将其称为findPath
和validatePath
,它通常适用于所有路径。我将validatePath
包装到另一个名为validateEnvPath
的函数中,该函数直接搜索“env”
要摆脱env
您可以执行以下操作:R.flip(R.curry(R.path))
。这将改变函数curry,然后改变参数,这样您就可以告诉函数首先要查询的位置
const进程={env:{myenv:':':')}
常量路径=R.flip(R.curry(R.path))
const findPathInProcess=R.pipe(
路径(过程),
R.ifElse(
R.isNil,
R.始终(未定义),
R.身份
)
)
const validatePath=路径=>
validationPathResponse(findPathInProcess(path))(`在[${path}]下找不到内容)`)
const validateEnvPath=path=>
validatePath(构建路径(['env'])(路径))
const buildPath=xs=>x=>
xs.concat(x)
const validationPathResponse=response=>errorMessage=>
响应
? 响应
:错误消息
log(validatePath(['env','myenv']))
log(validateEnvPath('myenv'))
log(validateEnvPath('yourenv'))
此外,还可以编写以下内容
const path = R.flip(R.path) // already curried
const findPathInProcess = R.pipe(
path(process),
R.when(
R.isNil,
R.always(undefined)
)
)
此外,还可以写以下内容
const path = R.flip(R.path) // already curried
const findPathInProcess = R.pipe(
path(process),
R.when(
R.isNil,
R.always(undefined)
)
)
考虑使用
或monad。它是否已经实现并与兄弟ramda配合良好:
考虑使用或monad。它是否已经实现并与兄弟ramda配合良好:
你能详细说明你的问题吗?你在期待什么,到底发生了什么?如果您遇到异常/错误,请发布发生该异常/错误的行以及异常/错误详细信息。请输入这些详细信息,否则我们可能无法提供帮助。谢谢@FrankerZ。最近更新了我的问题。你能详细说明你的问题吗?你在期待什么,到底发生了什么?如果您遇到异常/错误,请发布发生该异常/错误的行以及异常/错误详细信息。请输入这些详细信息,否则我们可能无法提供帮助。谢谢@FrankerZ。最近更新了我的问题。比我预期的多!非常感谢:)比我想象的要多!非常感谢:)