当前位置: 首页 > news >正文

备赛蓝桥杯之第十六届模拟赛2期职业院校组第五题:文本自动生成器

提示:本篇文章仅仅是作者自己目前在备赛蓝桥杯中,自己学习与刷题的学习笔记,写的不好,欢迎大家批评与建议


由于个别题目代码量与题目量偏大,请大家自己去蓝桥杯官网【连接高校和企业 - 蓝桥云课】去寻找原题,在这里只提供部分原题代码

本题目为:备赛蓝桥杯之第十六届模拟赛2期职业院校组第五题:文本自动生成器


题目:

经过运行环境运行之后的效果如下:

本题需要做的代码如下:

/**
 * 组合多个中间件函数,形成一个新的中间件函数。
 * @param {...Function} middlewares - 要组合的中间件函数。
 * @return {Function} - 组合后的中间件函数。
 */
function compose(...middlewares) {
   // TODO : 待补充代码 
}

 本题目标如下:

完善 js/compose.js 中 compose 函数的 TODO 部分,完成以下目标:

compose 函数接收多个中间件函数作为参数,每个函数中必须调用 next(arg) 将函数的执行值传递到下一个参数

所有中间件函数接受两个参数:initialValue 和 callbackinitialValue 是将通过中间件函数传递的初始值,而 callback 是在所有中间件函数执行完毕后将被调用并传入最终值的函数。

compose 函数的执行逻辑如下:它按照传入的顺序执行中间件函数,对每个中间件函数传递当前值。如果中间件函数返回一个值,则通过 next(arg) 的像是将其传递给下一个中间件函数。

compose 函数返回一个新的中间件函数,可以用于按顺序执行合并后的中间件函数。

compose 执行示例如下:

function add(str, next) {
  str+='2'
  next(str);
}
function add2(str, next) {
  str+='3'
  next(str);
}
const processdemo = compose(add,add2); //传入的函数会按照顺序执行
processdemo("1", (finalValue) => {
    console.log(finalValue) // 123
});
const processdemo2 = compose(add2,add);
processdemo2("1", (finalValue) => {
    console.log(finalValue) // 132
});

说人话:

        我们要做的是,定义一个能把所有中间件的方法链式执行下来的compose方法


本题作者想说

答案:

/**
 * 组合多个中间件函数,形成一个新的中间件函数。
 * @param {...Function} middlewares - 要组合的中间件函数。
 * @return {Function} - 组合后的中间件函数。
 */
function compose(...middlewares) {
    // TODO : 待补充代码 
    return function (initialValue, callback) {
        let index = -1

        function next(item) {
            index++
            let handlefunction = middlewares[index]
            if (!handlefunction) {
                return callback(item)
            }
            handlefunction(item, next)
        }
        next(initialValue)
    }
}

作者自我解释版:

function compose(...middlewares) {
    // TODO : 待补充代码 

    // 我们要做的是,定义一个能把所有中间件的方法链式执行下来的compose方法
    // 因为我们定义的是一个执行方法,所以返回一个函数
    // 该函数只接收两个参数initialValue 和 callback,initialValue 是初始值,callback 是执行完毕返回。
    return function (initialValue, callback) {
        // 首先我们要定义一个数值,用于执行对应的数量函数
        // 函数是从0开始的,当我们执行整个函数时,就要调用第一个函数,因此将index定义为-1,以便当index++时,执行第0个函数
        let index = -1
        // 强调一遍,基本的方法都已经做好了,我们主要做的做链式执行的next函数,以便顺序顺利执行
        // 定义一个next方法,传入一个初始值
        function next(item) {
            // index++开始执行
            index++
            // 定义一个正在执行的方法,相比于middlewares不同的是,handlefunction已经排好了序
            let handlefunction = middlewares[index]
            // 当所有函数都已经被调用后,即handlefunction为假,整个条件为真,则执行回调函数
            if (!handlefunction) {
                // 返回callback函数
                return callback(item)
            }
            // 除此之外,不仅定义了handlefunction函数还要使用这个函数
            // 将item传入进去,并且再次执行next函数,以达到顺序循环执行
            handlefunction(item, next)
        }
        // 初始值注入
        next(initialValue)
    }
}

感谢观看此篇文章,谢谢大家的支持,本片文章只是我自己学习的历程,有些写的不好地方欢迎大家交流改动。

长路漫漫,我们还需努力!

相关文章:

  • SQL Server 2022常见问题解答
  • Mybatis笔记(上)
  • VsCode启用右括号自动跳过(自动重写) - 自录制gif演示
  • 26考研——栈、队列和数组_数组和特殊矩阵(3)
  • 力扣刷题-热题100题-第24题(c++、python)
  • 代码规范之Variable Names变量名
  • 如何使用 CSS 实现多列布局,有哪些注意事项
  • 一款可查看手机详细配置信息的小工具,简单直观,自动识别硬件信息
  • 创建一个服务器启动自动执行的脚本,设置默认路由
  • LUMOS: Language-Conditioned Imitation Learning with World Models
  • QT三 自定义控件,自定义控件的事件处理自定义事件过滤,原始事件过滤
  • 爬虫——将数据保存到MongoDB中
  • conda极速上手记录
  • 如何部署自己的本地大模型
  • Hadoop三 分布式sql计算hive入门
  • 基于PyTorch的艺术风格迁移系统:卷积神经网络与迁移学习在图像生成的应用
  • 【Node.js入门教程:从零到精通】
  • 关于优麒麟ukylin如何更换清华源以及ubuntu24.04安装gcc-i686-linux-gnu找不到包的问题
  • AI视频生成技术的革新之路:Video-T1项目的深度解析
  • 计算机期刊推荐 | 计算机-人工智能、信息系统、理论和算法、软件工程、网络系统、图形学和多媒体, 工程技术-制造, 数学-数学跨学科应用
  • 网商银行2024年年报发布,客户资产管理规模超过1万亿
  • 视频丨中国海警位中国黄岩岛领海及周边区域执法巡查
  • 滨江集团:一季度营收225.07亿元,净利润9.75亿元
  • 澎湃回声丨23岁小伙“被精神病”8年续:今日将被移出“重精”管理系统
  • “五一”假期逛上海车展请提前购票,展会现场不售当日票
  • 今年一季度全国社会物流总额达91万亿元,工业品比重超八成