您的功能是什么颜色? (2015)

2026-05-26 1 阅读 tosh
您的功能是什么颜色?我不知道你怎么想,但没有什么比老式编程语言的咆哮更能让我早上继续前进的了。看到有人把平民使用的一种“blub”语言串起来,在偷偷地访问 StackOverflow 的间隙用它度过一天,真是令人热血沸腾。 (与此同时,你和我只使用最开明的语言。凿子锋利的工具是为像我们这样的专业工匠的修剪整齐的手而设计的。) 当然,作为上述长篇大论的作者,我冒着风险。我嘲笑的语言可能是你喜欢的一种!在没有意识到的情况下,我本可以让乌合之众进入我的博客,准备好干草叉和火把,而我的鲁莽小册子可能会引起他们的愤怒!为了保护自己免受这些火焰的伤害,并避免冒犯你可能脆弱的情感,相反,我会咆哮我刚刚编造的语言。一个唯一目的就是被点燃的稻草人。我知道,这似乎毫无意义,对吗?相信我,到最后,我们会看到谁的脸(或多张脸!)被画在他的稻草头上。一门新语言 #a-new-language 仅仅为了一篇博客文章而学习一门全新的(蹩脚的)语言是一项艰巨的任务,所以假设它与你我已经知道的语言大部分相似。我们会说它的语法有点像 JS。大括号和分号。 if 、 while 等。编程洞穴的通用语言。我选择 JS 并不是因为这就是这篇文章的主题。只是这是你(普通读者的统计代表)最有可能理解的语言。瞧: function thisIsAFunction () { return "It's Awesome" ;因为我们的稻草人是一种现代(糟糕的)语言,所以我们也有一流的功能。所以你可以做这样的事情: // 返回一个列表,其中包含集合中与谓词匹配的所有元素。函数过滤器(集合,谓词){ var 结果= []; for ( var i = 0 ; i < 集合 .length ; i ++ ) { if ( 谓词 ( 集合 [ i ] )) 结果 .推(集合[i]);返回结果;这是高阶函数之一,正如其名称所暗示的那样,它们非常优雅并且非常有用。你可能习惯了用它们来处理集合,但是一旦你内化了这个概念,你就会开始在任何地方使用它们。也许在你的测试框架中:describe ( "An apple" , function () { it ( "ain't no Orange" , function () { Expect ( "Apple" ). not . toBe ( "Orange" ); }); });或者当你需要解析一些数据时: tokens 。 match ( Token . LEFT_BRACKET , function ( token ) { // 解析列表文字... tokens . Consumer ( Token . RIGHT_BRACKET ); });因此,您进城编写各种很棒的可重用库和应用程序,传递函数、调用函数、返回函数。功能。你的函数是什么颜色的? #what-c​​olor-is-your-function 除了等待。这就是我们的语言变得扭曲的地方。它有一个独特的功能: 1. 每个函数都有一种颜色。每个函数(匿名回调或常规命名函数)都是红色或蓝色。有两个函数关键字,而不是单个函数关键字: blue_function doSomethingAzure () { // 这是一个蓝色函数... } red_function doSomethingCarnelian () { // 这是一个红色函数... } 该语言中没有无色函数。想做一个功能吗?一定要选个颜色啊他们就是规则。实际上,您还必须遵循更多规则: 2. 调用函数的方式取决于其颜色。想象一下“蓝色调用”语法和“红色调用”语法。类似于: doSomethingAzure ()blue ; doSomething红玉髓 ()red ;调用函数时,需要使用与其颜色对应的调用。如果你弄错了——在括号后调用带有蓝色的红色函数,反之亦然——它会做一些坏事。挖掘你童年中早已被遗忘的噩梦,就像一个藏在你床底下、手臂以蛇为臂的小丑。它会从你的显示器中跳出来,吸走你的玻璃体液。烦人的规则,对吧?哦,还有一个: 3. 您只能从另一个红色函数中调用一个红色函数。您可以从红色函数中调用蓝色函数。这是正确的: red_function doSomethingCarnelian () { doSomethingAzure ()blue ;但你不能走相反的路。如果您尝试这样做: blue_function doSomethingAzure () { doSomethingCarnelian ()red ; } 嗯,你会看到夜小丑老蜘蛛口来拜访。这使得编写像我们的 filter() 示例这样的高阶函数变得更加棘手。我们必须为它选择一种颜色,这会影响我们允许传递给它的函数的颜色。显而易见的解决方案是将 filter() 设为红色。这样,它就可以采用红色或蓝色函数并调用它们。但接下来我们遇到了下一个令人头疼的问题,那就是这种语言:4. 红色函数调用起来更痛苦。现在,我不会精确定义“痛苦”,但想象一下,程序员每次调用红色fu时都必须跳过某种烦人的循环