我的问题可能有点不清楚。之前也提出了同样的问题,但我无法通过阅读来弄清楚如何解决我的问题。我需要更明确的指导:
我已经创建了三个功能来检查颜色。 (我不会对它们有任何问题。由于尺寸的原因,我不在这里。) 让我们假设我们有三个这样的工作函数:
function checkHex(input) {
// returns boolean value if input is hex color
}
checkHex("#1234a6"); // returns true
function checkRGB(input) {
// returns boolean value if input is RGB color
}
checkRGB("rgb(255, 255, 112)"); // returns true
function checkHSL(input) {
// returns boolean value if input is hsl color
}
checkHSL("hsl(122, 1, 1)"); // returns true
我有第四个功能(checkColor),它有混合颜色值来检查:
function checkColor(input) {
// returns boolean value if input belong to right color value
}
checkColor("#ccccff"); // should return true
checkColor("rgb(255,255,200)"); // should return true
checkColor("hls(46,0.66,0.21)"); // should return true
问题:我是否必须将所有三个函数(checkHex,checkRGB,checkHSL)包含在第4个函数(checkColor)中?我怎么做。我对此进行了研究并尝试了几种方法来解决,但我无法解决
我试图不使用RegExp。我是编程新手,以前从未合并过多个函数。
您可以与我分享关于"组合多个功能的任何其他资源"也会帮助我很多。
感谢您提前花时间和精力!
答案 0 :(得分:0)
您构建的前3个函数通常称为谓词。有许多很好的方法可以对谓词进行分组,但@FelixKling在评论中提到了最简单的方法。您还可以专门为此目的创建函数。
// composition function
const any = (...predicates) => subject => predicates.reduce((state, predicate) => (state || predicate(subject)), false);
// predicates
const biggerThan5 = x => x>5;
const isOdd = x => !!(x % 2);
// results and usage
console.log(any(biggerThan5, isOdd)(10)); // true
console.log(any(biggerThan5, isOdd)(2)); // false
答案 1 :(得分:0)
你不应该将函数包含在其他函数中,你可以在其他函数中使用它们。 例如:
function checkColor(input) {
var isHex = checkHex(input), //store the result of function
isRGB = checkRGB(input), //store the result of function
isHLS = checkHSL(input); //store the result of function
return isHex || isRGB || isHLS; //returns true if one of the options is true.
}
function checkHex(input) {
// returns boolean value if input is hex color
}
function checkRGB(input) {
// returns boolean value if input is RGB color
}
function checkHSL(input) {
// returns boolean value if input is hsl color
}