Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从动态镜头获取动态视图_Javascript_Functional Programming_Ramda.js - Fatal编程技术网

Javascript 如何从动态镜头获取动态视图

Javascript 如何从动态镜头获取动态视图,javascript,functional-programming,ramda.js,Javascript,Functional Programming,Ramda.js,使用R.viewdinamily const robotsNames=[‘达芬奇手术系统’、‘凯特’、‘Tachikomas’、‘丰田小提琴演奏机器人’, “GERTY”、“Mega Man”、“Rock'Em Sock'Em Robots”、“Doraemon”、“Awesom-O”、“HK-47”、“ED-209”、“取啤酒机器人”, “主教”、“活力兔”、“叮当”、“愚蠢朋克”、“强尼5”、“机器人”、“机器人”、“偏执机器人马文”, “乐高思维风暴NXT”、“Robbie”、“Astr

使用
R.view
dinamily

const robotsNames=[‘达芬奇手术系统’、‘凯特’、‘Tachikomas’、‘丰田小提琴演奏机器人’,
“GERTY”、“Mega Man”、“Rock'Em Sock'Em Robots”、“Doraemon”、“Awesom-O”、“HK-47”、“ED-209”、“取啤酒机器人”,
“主教”、“活力兔”、“叮当”、“愚蠢朋克”、“强尼5”、“机器人”、“机器人”、“偏执机器人马文”,
“乐高思维风暴NXT”、“Robbie”、“Astro男孩”、“铁巨人”、“擎天柱”、“Roomba”、“DJ Roomba”、“Cindi Mayweather”,
‘罗西’、‘克劳·T·机器人/汤姆·伺服’、‘K-9’、‘终结者’、‘马辛尼斯,又名玛丽亚’、‘阿西莫’、‘格拉多斯’、‘哈尔9000’,
‘最后五个’、‘旅居者’、‘数据’、‘R2D2’、‘弯曲的罗德里格斯’、‘瓦力E’];
const getRandomInt=R.curry((最小值,最大值)=>{
返回Math.floor(Math.random()*(max-min+1))+min;
})
常量getRandomFromZero=getRandomInt(0);
const lensRandomRobot=R.管道(R.长度,getRandomFromZero,R.lensIndex);
//不工作。。。
const randomRobot=R.管道(lensRandomRobot,R.视图);
const robot=随机机器人(robotsNames);
//这很有效。。
//const robot=R.view(lensRandomRobot(robotsNames))(robotsNames)//我不想传递值
控制台日志(机器人)

如果要避免重复
机器人snames

const robotsNames=[‘达芬奇手术系统’、‘凯特’、‘Tachikomas’、‘丰田小提琴演奏机器人’,
“GERTY”、“Mega Man”、“Rock'Em Sock'Em Robots”、“Doraemon”、“Awesom-O”、“HK-47”、“ED-209”、“取啤酒机器人”,
“主教”、“活力兔”、“叮当”、“愚蠢朋克”、“强尼5”、“机器人”、“机器人”、“偏执机器人马文”,
“乐高思维风暴NXT”、“Robbie”、“Astro男孩”、“铁巨人”、“擎天柱”、“Roomba”、“DJ Roomba”、“Cindi Mayweather”,
‘罗西’、‘克劳·T·机器人/汤姆·伺服’、‘K-9’、‘终结者’、‘马辛尼斯,又名玛丽亚’、‘阿西莫’、‘格拉多斯’、‘哈尔9000’,
‘最后五个’、‘旅居者’、‘数据’、‘R2D2’、‘弯曲的罗德里格斯’、‘瓦力E’];
const getRandomInt=R.curry((最小值,最大值)=>{
返回Math.floor(Math.random()*(max-min+1))+min;
})
常量getRandomFromZero=getRandomInt(0);
const lensRandomRobot=R.管道(R.长度,getRandomFromZero,R.lensIndex);
//这里的零钱
const randomRobot=R.converge(R.view,[lensRandomRobot,R.identity]);
const robot=随机机器人(robotsNames);
控制台日志(机器人)

如果要避免重复
机器人snames

const robotsNames=[‘达芬奇手术系统’、‘凯特’、‘Tachikomas’、‘丰田小提琴演奏机器人’,
“GERTY”、“Mega Man”、“Rock'Em Sock'Em Robots”、“Doraemon”、“Awesom-O”、“HK-47”、“ED-209”、“取啤酒机器人”,
“主教”、“活力兔”、“叮当”、“愚蠢朋克”、“强尼5”、“机器人”、“机器人”、“偏执机器人马文”,
“乐高思维风暴NXT”、“Robbie”、“Astro男孩”、“铁巨人”、“擎天柱”、“Roomba”、“DJ Roomba”、“Cindi Mayweather”,
‘罗西’、‘克劳·T·机器人/汤姆·伺服’、‘K-9’、‘终结者’、‘马辛尼斯,又名玛丽亚’、‘阿西莫’、‘格拉多斯’、‘哈尔9000’,
‘最后五个’、‘旅居者’、‘数据’、‘R2D2’、‘弯曲的罗德里格斯’、‘瓦力E’];
const getRandomInt=R.curry((最小值,最大值)=>{
返回Math.floor(Math.random()*(max-min+1))+min;
})
常量getRandomFromZero=getRandomInt(0);
const lensRandomRobot=R.管道(R.长度,getRandomFromZero,R.lensIndex);
//这里的零钱
const randomRobot=R.converge(R.view,[lensRandomRobot,R.identity]);
const robot=随机机器人(robotsNames);
控制台日志(机器人)
两件事:

  • 达蒙的回答很好。按预期完成工作。但是有几种可供选择的方法。code>converge
非常特定于Ramda。你可能会对FP世界更了解的东西感兴趣。这种情况更为普遍。您可以这样使用它:

const randomRobot = R.lift(R.view)(lensRandomRobot, R.identity);
ap(f, g)(x); //=> f(x)(g(x))
或者,也许最好是这样,这将是完美的,除了中的参数顺序与
ap
提供的相反,因此也需要一个*:

您可以在上看到这些方法

  • 其次,在函数代码中引入随机源是一个奇怪的想法。显然,任何使用随机值的东西都不再是引用透明的。这就是Ramda不提供随机/随机函数的原因

    拉姆达曾在某一点上做过随机性实验,试图使用一个参考透明的版本。但最终它被认为是不匹配的,但可能会帮助您创建基于随机的代码的可测试版本


  • *关键是当
    ap
    应用于函数时,其行为如下:

    const randomRobot = R.lift(R.view)(lensRandomRobot, R.identity);
    
    ap(f, g)(x); //=> f(x)(g(x))
    
    对于像Ramda那样的函数,这相当于

    ap(f, g)(x); //=> f(x, g(x))
    
    两件事:

    • 达蒙的回答很好。按预期完成工作。但是有几种可供选择的方法。code>converge
    非常特定于Ramda。你可能会对FP世界更了解的东西感兴趣。这种情况更为普遍。您可以这样使用它:

    const randomRobot = R.lift(R.view)(lensRandomRobot, R.identity);
    
    ap(f, g)(x); //=> f(x)(g(x))
    
    或者,也许最好是这样,这将是完美的,除了中的参数顺序与
    ap
    提供的相反,因此也需要一个*:

    您可以在上看到这些方法

  • 其次,在函数代码中引入随机源是一个奇怪的想法。显然,任何使用随机值的东西都不再是引用透明的。这就是Ramda不提供随机/随机函数的原因

    拉姆达曾在某一点上做过随机性实验,试图使用一个参考透明的版本。但最终它被认为是一场糟糕的比赛而放弃了,但它可能会帮助你