首页
学习
活动
专区
圈层
工具
发布

【Kotlin】标准库函数 ② ( run 标准库函数 | run 函数传入 Lambda 表达式作为参数 | run 函数传入函数引用作为参数 )

文章目录 一、run 标准库函数 1、run 函数传入 Lambda 表达式作为参数 2、run 函数传入函数引用作为参数 Kotlin 语言中 , 在 Standard.kt 源码中 , 为所有类型定义了一批标准库函数..., 所有的 Kotlin 类型都可以调用这些函数 ; 一、run 标准库函数 ---- 1、run 函数传入 Lambda 表达式作为参数 run 标准库函数原型如下 : /** * 调用以' this...T.() -> R 类型 的 Lambda 表达式 作为参数 , 该 run 函数的 返回值 就是 Lambda 表达式 的返回值 ; 代码示例 : 在下面的代码中 , run 函数的 Lambda...true } println(ret) } 执行结果 : true 2、run 函数传入函数引用作为参数 在上述函数原型中 : public inline fun T.run...(block: T.() -> R): R {} run 函数 , 传入 T.() -> R 类型 的 函数参数 , 此处也可以传入 函数引用 ; 利用 run 函数的该用法 , 可以进行链式调用 ;

1.1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    js中带有参数的函数作为值传入后调用问题

    ❝小闫语录:你可以菜,但是就这么菜下去是不是有点过分了 ❞ 每天不是在写 bug,就是在解 bug 的路上~更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』 1.无参数函数作为参数传入调用...当根据实际情况,函数需要作为参数传入时,一般采用如下方式直接调用即可: function fuc1() { console.log(1); } function fuc2(a) { a();...} fuc2(fuc1); // 1 2.有参数函数作为参数传入调用 一般的函数都有参数,那么这种情况如何传参呢?...param) { console.log(param); } function fuc2(a, b) { a(b); } fuc2(fuc1, "欢迎关注微信公众号:全栈技术精选"); 3.有参数函数作为事件方法...现在要将传入的函数作为点击事件的处理程序,你一定想得是这样: function fuc1(param) { alert(param); } var link = document.getElementsByClassName

    10.5K40

    设计模式——把类作为参数的抽象工厂模式

    主要的用途一般是将一些复杂的类的创建过程整合在一起,通过参数控制,这样使用者可以较简单地获得实例。 抽象工厂 抽象工厂模式和工厂模式类似,只不过更加抽象了一层。...在创建实例的时候,不是通过参数来控制,而是直接传入想要创建的类。这一点其实也是Python的特性,一切皆是对象,一切皆可传参,类本身也是一个对象,类也是可以传参的。...所以我们可以把一个类直接传入工厂,工厂通过类来创建实例。...父类当中的逻辑其实也是定好的,只是它在具体执行的时候是调用传入的子类实例实现的。...我第一次看这个设计模式的时候,觉得普普通通,不过是把类当做参数而已。但是之后又看了一次,又有了新的理解,这不也是抽象类的反向使用吗?

    1.3K20

    jQuery的回调模块 -- 为什么放弃使用Cache

    jQuery1.7之后加入了回调模块 -- jQuery.Callbacks()。...这个主要用在jQuery内部的调用:Deferred, Ajax。相关内容可以查看艾伦的慕课网或博客园教程。 我在这里和大家讨论的是另一个话题:关于参数传递的处理。...代码中每次去调用该方法时,都会将字符串列转为JSON对象,如果传递参数相同,需要再次去转吗? 4. 针对第三个问题,jQuery的解决方法是使用一个缓存,可以看下1.7.2中的实现。...参数处理的历程 1. 在jQuery1.7.2中是这样处理的: flags = flags ?...而且在jQuery3.1中也是第三种实现。为什么呢?使用缓存和不适用缓存有什么另外的比较吗? 大家可以积极留言,互相讨论。

    80810

    在Python中将函数作为另一个函数的参数传入并调用的方法

    在Python中,函数本身也是对象,所以可以将函数作为参数传入另一函数并进行调用在旧版本中,可以使用apply(function, *args, **kwargs)进行调用,但是在新版本中已经移除,以function...argsif __name__ == '__main__': func_a(func_b, 1, 2, 3)Output:----------(1, 2, 3)----------在代码中,将函数func_b作为函数...func_a的参数传入,将函数func_b的参数以元组args传入,并在调用func_b时,作为func_b的参数。...argument: 'arg_a'--------------------------------------------------------------------虽然通过修改,手动将arg_a作为参数传入...换句话说,如果已经提前知道需要调用什么函数,那完全不必要把函数作为参数传入另一个函数并调用,直接调用函数即可。

    12K20

    看看这几种设计模式吧!

    为什么要封装代码? 我们经常听说:“写代码要有良好的封装,要高内聚,低耦合”。那怎样才算良好的封装,我们为什么要封装呢?其实封装有这样几个好处: 封装好的代码,内部变量不会污染外部。...可以作为一个模块给外部调用。外部调用者不需要知道实现的细节,只需要按照约定的规范使用就行了。 对扩展开放,对修改关闭,即开闭原则。...常见工厂模式的一个特征就是调用的时候不需要使用new,而且传入的参数比较简单。但是调用次数可能比较频繁,经常需要产出不同的对象,频繁调用时不用new也方便很多。...这个popup不仅仅让我们调用的时候少了一个new,他其实还把相关的各种弹窗都封装在了里面,这个popup可以直接作为模块export出去给别人调用,也可以挂载在window上作为一个模块给别人调用。...let infoPopup1 = popup('infoPopup', content, color); jQuery的工厂模式 jQuery也是一个典型的工厂模式,你给他一个参数,他就给你返回符合参数

    1.1K20

    再谈模块化

    ("click",handleClick); } }; }(); //扩展模块: 调用立即执行函数,并传入需要扩展的模块作为参数: (function(module) {...document.addEventListener("wheel",handleScroll); } })(MouseCounterModule); //将模块传入,作为参数...糟糕的是,当我们创建模块化应用时,模块本身常常会依赖其他模块的功能(如jquery),模块模式无法实现这样的依赖关系。...由此归纳define接收参数: 新创建模块的ID。使用该ID,可以在系统的其他部分引用该模块。 当前模块依赖的模块ID列表。 初始化模块的工厂函数,该工厂函数接收依赖的模块列表作为参数。...当所有依赖的模块下载并解析完成后,调用模块的工厂函数,并传入所依赖的模块(如JQuery)。 模块的工厂函数,是与前面提到的模块模式类似的创建模块的过程。

    55820

    从架构入手轻松读懂框架源码:以jQuery,Zepto,Vue和lodash-es为例

    这里有个技巧是将window作为参数传进去,而不是直接在函数内部去拿window,这是因为在里面拿会往上找一层才能拿到,会稍微慢一点。...先是做了一些检测,兼容CommonJS和node.js,其实核心代码就一行: factory( global ); 复制代码 将global作为参数调用了factory,看来jQuery真正的核心还是这个...看到这里是不是感觉有点绕,绕了一圈在jQuery()方法里面其实就是返回了一个jQuery实例嘛,为什么不直接返回new jQuery()呢?...jQuery是通过$.fn.extend和$.extend来做的,而Zepto是通过自执行函数,将Zepto作为参数传进去,然后在自执行函数里面直接对$和$.fn添加属性来实现的。...可以看到这个自执行函数将Zepto作为参数传进去了,这个Zepto就是window.Zepto,也就是window.

    1.6K20

    【深入浅出jQuery】源码浅析--整体架构

    不同于 jQuery 代码各个模块细节实现的晦涩难懂,jQuery 整体框架的结构十分清晰,按代码行文大致分为如上图所示的模块。...在 jQuery 中,只有全局都会用到的变量、正则表达式定义在了代码最开头,而每个模块一开始,又会定义一些只在本模块会使用到的变量、正则、方法等。...,[ownerDocument]) jQuery(html,[attributes]) // 传入空参数 jQuery() // 绑定一个在 DOM 文档载入完成后执行的函数 jQuery(callback...,那么为什么两个方法指向同一个函数实现,但是却实现不同的功能呢, // 阅读源码就能发现这归功于 this 的强大力量 // 如果传入两个或多个对象,所有对象的属性会被添加到第一个对象 target /...// 如果参数的长度为 1 ,表示是 jQuery 静态方法 if (length === i) { target = this; --i; } // 可以传入多个复制源 // i

    81541

    JavaScript 设计模式学习第十五篇-外观模式

    从中就可以理解外观模式的意义了,遥控器作为无人机系统的功能出口,降低了使用者对复杂的无人机系统使用的难度,甚至让广场上的小朋友都能玩起来了。 ? 概略图如下: ?...注意:外观模式一般是作为子系统的功能出口出现,使用的时候可以在其中增加新的功能,但是不推介这样做,因为外观应该是对已有功能的包装,不应在其中掺杂新的功能。 4. 实战中的外观模式 4.1....,那么就把传入的第一个参数作为 end,并 start 置为默认值。...,只要传入 dataType: 'jsonp' 设置,jQuery 会进行一些额外操作帮我们启动 JSONP 流程,并不需要使用者手动添加代码,这些都被封装在 .ajax() 这个外观方法中了。...中介者模式:封装子系统间各模块之间的直接交互,松散模块间的耦合; 8.2. 外观模式与单例模式 有时候一个系统只需要一个外观,比如之前举的 Axios 的 HTTP 模块例子。

    54710

    requireJs的使用,以canvas绘制星空为例

    /jquery-2.2.3.min","jquery.min"] jquery设置模块的引用名, ["https://code.jquery.com/jquery-2.2.3.min","jquery.min...在使用js模块的时候按照以下写法: require(['jquery'], function ($){ //代码块 }); require第一个参数传入调用的模块名,可以为字符串(单个模块)或者数组...(多个模块),function参数列表为调用的模块名,在function代码块中我们自定义代码。...,第一个参数可选,传入需要使用的模块,上面的common.js没有用到其他模块,所以第一个参数没有写,第二个参数为自定义函数的代码块。...cxt.fillStyle=grd; //使用设置好的模式绘制矩形,在这里的矩形作为背景层 cxt.fillRect(0,0,width,height); }; //绘制地面 var

    1.3K90

    基础 | 详细图解jQuery对象,以及如何扩展jQuery插件

    使用jQuery对象时,我们这样写: 在使用之初可能会有许多疑问,比如$是怎么回事?为什么不用new就可以直接声明一个对象等等。后来了解之后,才知道原来这正是jQuery对象创建的巧妙之处。...传入的参数options对象为一个key: value模式的对象,我通过for in遍历options,将key作为jQuery的新属性,value作为该新属性所对应的新方法,分别添加到jQuery方法和...而在实现jQuery扩展方法的想法中,一部分方法需要扩展到jQuery构造函数中,一部分方法需要扩展到原型中,当我们通读jQuery源码,还发现有一些方法放在了模块作用域中,至于为什么会有这样的区别,建议大家回过头去读读前一篇文章...虽然前面我多多少少都涉及到了模块的一些概念,但是还差一个实践。因此最终我会以ES6的模块跟大家分享如何使用。...那么后续的文章应该会涉及的内容,就大概包括: 1、事件循环机制 2、Promise 3、ES6的基础语法 4、ES6下的常用设计模式 5、ES6模块 6、结合ES6的实例 7、React基础语法 8、React

    83520

    gulp 详解与使用

    为什么要用 gulp 与 grunt 相比,gulp 无需写一大堆繁杂的配置参数,API(中文 API) 也非常简单,学习起来很容易,而且 gulp 使用的是 nodejs 中 stream 来读取和操作数据...展开模式以花括号作为定界符,根据它里面的内容,会展开为多个模式,最后匹配的结果为所有展开的模式想加起来得到的结果。...,只能用来指定要生成的文件的目录,而不能指定生成文件的文件名,它生成文件的文件名使用的是导入到它的文件流自身的文件名,所以生成的文件名是由导入到它的文件流决定的,即使我们给它传入一个带有文件名的路径参数...gulp.dest() 方法传入的路径参数之间的关系。...gulp.dest(path) 生成的文件路径是我们传入的 path 参数后面再加上 gulp.src() 中有通配符开始出现的那部分路径。

    1.4K10

    从前端模块化的概念来理解Webpack

    https://blog.csdn.net/wkyseo/article/details/55670412 为什么需要模块化?...deps[i] = modules[deps[i]]; } modules[name] = impl.apply(impl, deps);//传入依赖的模块名作为参数...为了模块的定义引入了包装函数(可以传入任何依赖),并且将返回值,也就是模块的API,存储在一个根据名字来管理的模块列表中。...可以研究示例代码深入理解下闭包的作用,最重要的是要理解模块管理器没有任何特殊的“魔力”,它们符合前面列出的模块模式的两个特点: 调用了包装函数定义的包装函数, 并且将返回值作为该模块的API。...下半部分是我们的JS代码,包裹了一个函数,也就是模块。运行的时候模块是作为Runtime的参数被传进去的。

    78330
    领券