首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js匿名函数作为函数参数

大家好,又见面了,我是你们朋友全栈君。 由衷感叹,js真是烦。 学到现在,渐渐理解了什么是:语言都是通用,没有好不好,只有擅长不擅长。...继承,多态,甚至指针,c能实现,c++,java有,javascript(和java是雷锋和雷峰塔区别,名字上不知道坑了多少人)也能变通实现。 温故知新,今天又回味了一遍,匿名函数作为函数参数。...} test(3, function(result){ console.log(result); }); 匿名函数作为函数参数...难道匿名函数自执行了? 错!!!匿名函数!=自执行匿名函数 真相只有1个:匿名函数作为参数,在调用(将匿名函数作为参数函数里被调用执行了。...function test( a, b ){ a+=1; // b是对象,函数名也是对象,所以b可以指代一个函数 // 类似c++中函数名一样 // a被复制给了

5.2K20

Kotlin函数 ④ ( 匿名函数参数 | 匿名函数 it 关键字 )

文章目录 一、匿名函数参数 二、匿名函数 it 关键字 一、匿名函数参数 ---- 匿名函数 可以不带参数 , 也可以带多个参数 ; 不带参数匿名函数 : // 声明 函数类型 变量, 并为其赋值...匿名函数 val helloFun: ()->String = { "Hello World" } 带参数匿名函数 : 匿名函数 参数类型 放在 函数类型 定义中...值作为参数 println(helloFun(18)) } 执行结果 : 二、匿名函数 it 关键字 ---- 如果 匿名函数 只有 1 个函数参数 , 在 匿名函数 函数体 中 , 可以...it 关键字 作为 参数名 ; fun main() { // 声明 函数类型 变量, 并为其赋值 匿名函数 val helloFun: (Int)->String = {..."Hello World $it" } // 调用该 (Int)->String 类型匿名函数, 传入 Int 值作为参数 println(helloFun(18)) } 执行结果

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

Kotlin函数 ③ ( 匿名函数 | 匿名函数函数类型 | 匿名函数隐式返回 )

文章目录 一、匿名函数 二、匿名函数函数类型 三、匿名函数隐式返回 一、匿名函数 ---- 声明函数时 , 没有 函数函数匿名函数 ; 匿名函数 可以作为 函数参数 , 也可以作为 函数返回值...; 匿名函数 可以 定制修改 已有的 函数 , 如 : 标准库中函数 ; Kotlin 中对 CharSequence 类进行了扩展 , 定义了 count(predicate: (Char) ->...{ letter-> letter == 'l' } 作为参数 , 其作用是 返回 "Hello" 字符串中 , 字符符合 letter == 'l' 要求字符个数 ; fun main() {...---- 匿名函数 可以作为 变量 赋值给 函数类型变量 , 可以作为 函数参数 传递给函数 , 因此 , 匿名函数 与 变量 一样 , 也存在 对应 函数类型 ; 函数类型 由 参数 和 返回值...决定 ; 有 相同 参数顺序 , 参数个数 和 返回值类型 函数 , 其 函数类型相同 ; 如上个章节 , 扩展函数 CharSequence.count 接收匿名函数参数 predicate ,

3K20

Kotlin函数 ⑧ ( 函数引用 作为函数参数 | ::函数名 | 函数类型 作为函数返回值类型 )

文章目录 一、函数引用作为函数参数 二、函数类型作为函数返回值 一、函数引用作为函数参数 ---- 函数 作为参数 , 有两种方式 : 传递 Lambda 表达式 , 也就是 匿名函数 作为参数值 ;...传递 函数引用 作为参数值 ; 函数引用 可以将 具名函数 转为 函数参数值 , 只要可以使用 Lambda 表达式 参数地方 , 就可以使用 函数引用 进行替代 ; 函数引用格式 : 两个冒号..., 匿名函数 没有函数名 ; 代码示例 : 在下面的代码中 , 首先使用 actionFun 函数类型变量 作为 studentDoSomething 函数参数 , 该变量值是一个 匿名函数 Lambda...表达式 , 然后使用 doSomething 函数 函数引用 ::doSomething 作为 studentDoSomething 函数参数 , 使用 匿名函数 Lambda 表达式 作为参数...与 使用 函数引用 作为参数 , 其效果是相同 ; fun main() { // 定义函数类型变量, 之后作为函数参数传递给函数 // 该匿名函数变量, 可以作为参数 val

2.6K10

Kotlin函数 ⑤ ( 匿名函数变量类型推断 | 匿名函数参数类型自动推断 | 匿名函数又称为 Lambda 表达式 )

文章目录 一、匿名函数变量类型推断 二、匿名函数参数类型自动推断 三、Lambda 表达式 一、匿名函数变量类型推断 ---- 定义变量 时 , 如果将变量值 直接赋值给该变量 , 那么就可以 不用显示声明该变量类型...; var name: String 如果定义一个 函数类型 变量 , 将 匿名函数 作为变量值 赋值给该变量 , 此时可以 不需要显示声明 函数类型 变量值 ; 下面的代码中 函数类型 : ()...World, $name" } println(helloFun()) } 二、匿名函数参数类型自动推断 ---- 如果 需要 使用 自动类型推断 确定 匿名函数 参数类型 , 则在..., 匿名函数函数体中 , 使用 变量名: 变量类型 -> , name: String, age: Int -> , 显示声明了匿名函数 参数类型 , 这样就可以使用 类型推断 , 自动推断出 匿名函数...参数类型 ; 该匿名函数 函数体 最后一行表达式 类型 是 String 类型 , 其 返回值类型就是 String 类型 ; fun main() { val helloFun = {

70320

Kotlin构造函数实例

本文向大家介绍了Kotlin构造函数声明与调用。 本文选自《揭秘Kotlin编程原理》一书 1 Kotlin构造函数 Kotlin作为面向对象编程语言,也支持为类型声明构造函数。...由于本示例中定义了两种二级构造函数,因此可以分别调用这两种构造函数实例SharedBike类型,下面的示例直接使用了第2种构造函数: fun main(args:Array){...,则默认、无参构造函数将被完全覆盖,不能再通过调用这种无参构造函数实例类型实例。...注意在本示例中,主构造函数被声明为private级别的访问权限,所以无法再通过以下语句实例SharedBike类: var sharedbike = SharedBike("ofo", 188) 但是本示例中二级构造函数并没有被添加...类连二级构造函数也都被声明为private类型,限制无论如何都不能通过调用任何构造函数实例SharedBike类型。

2.3K20

Kotlin函数 ⑨ ( Kotlin 语言中闭包概念 | Java 语言中函数作为参数替代方案 )

文章目录 一、闭包概念 二、Java 中函数作为参数替代方案 ( 匿名内部类 ) 一、闭包概念 ---- 匿名函数 就是 Lambda 表达式 , 同时也是 闭包 , 三者是相同概念 ; 闭包意义...参数 或 返回值 函数 ; 使用 匿名函数 / Lambda 表达式 / 闭包 作为 参数 / 返回值 函数 是 高级函数 ; Kotlin 中经常使用 链式调用 , 就是 函数式编程 风格...; 二、Java 中函数作为参数替代方案 ( 匿名内部类 ) ---- Kotlin 中引入 函数类型 , 将 匿名函数 / Lambda 表达式 / 闭包 作为 函数参数 或 返回值 , 可以写出...更加灵活代码 ; Java 8 开始 支持 Lambda 表达式 , 但是 不支持 函数 作为参数 , 也 不支持将 函数 赋值给变量 ; Java 语言 将 函数 作为参数 替代方案 是 : 使用...匿名内部类 作为函数参数 ; 代码示例 : Java 代码中 , 接收 OnClickListener listener 类型接口类型参数 , 在实际使用时 , 可以传入一个匿名内部类作为参数 ,

96610

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

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

83010

KotlinKotlin 构造函数 ( 主构造函数 | 主构造函数声明属性 | init 初始代码块 | 次构造函数 | 构造函数委托 | 调用构造函数创建实例对象 )

代码执行顺序 : init 初始代码块 , 与类属性定义优先级相同 , 在类对象实例初始化时 , 会按照在类中定义顺序 , 依次执行类属性初始和 init 初始代码块 ; 4 ....主构造函数参数 和 成员变量访问方式 ---- 1 . 主构造函数参数访问性 : 可以在 类属性字段初始赋值 和 init 初始代码块中 访问主构造函数参数变量值 ; 2 ....次构造函数委托主 : ① 委托方式 : 使用 : this ( 被委托构造函数参数列表 ) 方式 , 直接或间接委托给主构造函数 ; ② 直接委托 : 每个次构造函数必须委托给主构造函数 ( 直接委托主构造函数...初始代码块 : init 代码块等同于主构造函数函数体 , 当次构造函数将操作委托给主构造函数时 , 会先执行 init 初始代码块 , 然后再运行次构造函数体 ; IX ....创建实例对象 : Kotlin 中没有 new 关键字 , 使用 类名 ( 构造函数参数列表 ) 方式 , 创建类对象实例 ; 2 .

3.1K10

结构体作为函数参数

1.传递结构体成员 > 只要结构体成员是一个具有单个值数据类型,便可把它作为参数传递给接受该特定类型函数。 > 使用这种方式为函数传递参数与普通变量作为参数相同,都是以传值方式传递。...char title[50]; char author[50]; }Shot; void modify(float stdata); modify(Shot.price); > 如果在被调函数中要修改结构体成员值...运算符优先级很高,高于&取址运算符,但是仍然建议加上括号,是表达更加清晰。 2.传递结构体 > 使用结构体变量作为函数参数时,也是传值,会将结构体变量全部内存单元内容拷贝一份传递给被调函数。...被调函数形参也必须是同类型结构体类型。...modify中,要使用指向运算符->访问结构体成员或者使用括号,因为他参数是一个结构体指针 > 实参还有第二种写法,将实参直接定义为结构体指针 struct book { float price

2.1K10

Kotlin 创建接口或者抽象类匿名对象实例

继承、派生、接口、构造方式,方法、属性重写 前言 kotlin 作为google官方android 开发语言,大势所趋,据传到2018底kotlin要全面替代java在android中地位,其实这个也不担心毕竟...Kotlin 继承 1.使用 open 关键字进行修饰 2.主构造函数紧跟着在类后面声明函数 open class Person(var name : String, var age : Int){/...因为val属性本身定义了getter方法,重写为var属性会在衍生类中额外声明一个setter方法 你可以在主构造函数中使用 override 关键字作为属性声明一部分: interface Foo...foo() { //已实现 // 可选方法体 println("foo") } } 接口中属性 接口中属性只能是抽象,不允许初始值,接口不会保存属性值,实现接口时,必须重写属性:...以上这篇Kotlin 创建接口或者抽象类匿名对象实例就是小编分享给大家全部内容了,希望能给大家一个参考。

2.8K41

【C语言笔记】函数指针作为函数参数

函数指针有两种常用用法,一种是作为结构体成员,关于函数指针作为结构体成员用法可移步至上一篇【C语言笔记】函数指针作为结构体成员进行查看。另一种是函数指针作为函数参数。...这一篇分享函数指针作为函数参数。 一、函数指针作为函数参数 函数指针可以作为一个参数传递给另一个函数。这时函数指针使用就像普通常量和变量一样。...当函数指针作为参数传递时候,这时接收参数传递函数通常需要根据这个指针调用这个函数作为参数传递函数指针通常表示回调函数(Callback Functions)。 1、什么是回调函数?...其关键在于函数指针comp指向函数具体实现。 二、举例说明 上一节我们使用函数指针作为结构体成员来实现四则运算,这里一节我们稍微修改一下代码,使用函数指针作为函数参数来实现四则运算。...以上就是关于函数指针作为函数参数笔记,如有错误欢迎指出!

9.1K11

kotlin基础语法

do { //代码语句 }while(布尔表达式); 返回和跳转 Kotlin 有三种结构跳转表达式: return。默认从最直接包围它函数或者匿名函数 返回。 break。...使用 out 使得一个类型参数协变,协变类型参数只能用作输出,可以作为返回值类型但是无法作为入参类型: in 使得一个类型参数逆变,逆变类型参数只能用作输入,可以作为入参类型但是无法作为返回值类型...如果你使用匿名对象作为公有函数 返回类型或者用作公有属性类型,那么该函数或属性实际类型 会是匿名对象声明超类型,如果你没有声明任何超类型,就会是 Any。在匿名对象 中添加成员将无法访问。..., 返回一个 Lazy 实例函数,返回实例可以作为实现延迟属性委托: 第一次调用 get() 会执行已传递给 lazy() lamda 表达式并记录结果, 后续调用 get() 只是返回记录结果...这经常出现在像解析 JSON 或者做其他"动态"事情应用中。 在这种情况下,你可以使用映射实例自身作为委托来实现委托属性。 class Data(val map: Map<String, Any?

2.1K20

Kotlin函数类型 ( 函数类型 | 带参数名称参数列表 | 可空函数类型 | 复杂函数类型 | 带接收者函数类型 | 函数类型别名 | 函数类型实例 | 函数调用 )

函数类型 II . 带参数参数列表 III . 可空函数类型 IV . 复杂函数类型解读 V . 函数类型别名 VI . 带 接收者类型 函数类型 VII . 函数类型实例 VIII ....类型参数 , 将返回 “返回值类型” 返回值 ; ③ 本质 : 实例该 带接收者函数类型 变量时 , 相当于为该接收者类型定义了一个扩展函数 ; 2 ....函数类型实例 ---- 函数类型 变量实例 : 给 函数类型变量 进行赋值 , 可以赋值类型有以下几种情况 ; 1 ....匿名函数 : 匿名函数 可以直接赋值给 函数类型 变量 ; // 将 匿名函数 赋值给函数类型变量 var add2 : (Int, Int) -> Int = fun (a : Int, b : Int...函数类型自动推断 ---- 1 . 变量类型推断 : Kotlin变量类型可以不用显示声明 , 可以根据其赋值类型进行智能类型推断 ; 2 .

2.6K10

【码上开学】Kotlin 高阶函数匿名函数和 Lambda 表达式

同样函数类型不只可以作为函数参数类型,还可以作为函数返回值类型: fun c(param: Int): (Int) -> Unit { ... } 这种「参数或者返回值为函数类型函数」,...Kotlin 里「函数可以作为参数」这件事本质,是函数Kotlin 里可以作为对象存在——因为只有对象才能被作为参数传递啊。赋值也是一样道理,只有对象才能被赋值给变量啊。...现在我再停一下,我们想想:匿名函数和 Lambda……它们到底是什么? Kotlin匿名函数和 Lambda 表达式本质 我们先看匿名函数。它可以作为参数传递,也可以赋值给变量,对吧?...但是我们刚才也说过了函数是不能作为参数传递,也不能赋值给变量,对吧? 那为什么匿名函数就这么特殊呢? 因为 Kotlin 匿名函数不——是——函——数。它是个对象。...因为 Kotlin 期望我们直接使用函数类型参数,而不是用接口这种折中方案。 总结 好,这就是 Kotlin 高阶函数匿名函数和 Lambda。

2.1K20

Kotlin修炼指南(三)——奇技淫巧

lazy 通过lazy函数,可以实现在首次使用到时候才去实例。...这是object另一个比较常用地方,也符合了object语义,定义一个类,并生成该类实例,也就是需要创建匿名内部类。...对于扩展函数来说,转化为Java代码时候,其实就是生成一个静态函数,这个静态函数第一个参数就是该类实例对象,所以这样把类实例传入函数以后,函数内部就可以访问到类公有方法。...扩展属性也是类似,获取扩展属性会生成为一个静态get函数,同时这个静态函数第一个参数就是该类实例对象,设置扩展属性会转化为一个静态set函数,同时这个静态函数第一个参数就是该类实例对象。...如果需要在使用一个类同时,又要修改该类一些函数实现,这时候就可以使用装饰器模式,创建一个装饰器类,实现与原始类一样接口并将原来实例作为一个成员变量。

72620

利用 kotlin 方式自定义回调事件(kotlin函数参数)

利用 kotlin 函数作为参数(强烈推荐) 来看一下系统点击事件在 kotlin 中是什么样: ? 是不是简直简洁到不像话?...2018.12.12 更新: 上边截图里 kotlin 点击事件回调,还有更简洁定义方法: ? 之前写法是声明不可为 null 函数变量,然后判断是否初始再去 invoke 函数。...现在声明可为 null 函数变量,在 invoke 函数时候用 ?. 表示函数变量可空,如果没有给这个点击事件函数赋值的话,这行代码也不会引起 crash。现在连判断条件都不需要了,更精简了。...这里再说点个人经验,如果你回调方法不止一个的话,推荐还是声明 interface 来做,这样的话都在一个 interface 里边好管理一些 以上这篇利用 kotlin 方式自定义回调事件(kotlin...函数参数)就是小编分享给大家全部内容了,希望能给大家一个参考。

1.8K21

Kotlin | 4.类、对象和接口

不能直接创建它实例 abstract class Animated { // 这个函数是抽象:它没有实现必须被子类重写 abstract...目的:1表明构造方法参数 2定义使用这些参数初始属性 class User(val nickName: String) // 1.明确写法: /*...初始语句块和从构造方法为初始实例提供了灵活性 使用 field 标识符在访问器方法体中引用属性支持字段 数据类提供了编译器生成 equals hashCode toString copy 和其他方法...类委托帮助避免在代码中出现许多相似的委托方法。 对象声明是Kotlin 中定义单例类方法。...伴生对象(与包级别函数和属性 起)替代了 Java 静态方法和字段定义 伴生对象与其他对象一样,可以实现接口,也可以拥有有扩展函数和属性 对象表达式是 Kotlin 中针对 Java 匿名内部类替代品

91310

java scanner构造函数_使用Scanner作为构造函数参数Java

参考链接: Java Scanner仪类 这是一个学校任务问题,这就是为什么我这样做原因。...使用Scanner作为构造函数参数Java  总之,我在主要方法(Scanner stdin = new Scanner(System.in);是行)中使用Stdin制作扫描仪,从程序运行时指定txt...这种扫描仪按预期工作为主,不过,我需要用它在具有扫描仪作为参数自定义类:  public PhDCandidate(Scanner stdin)  {  name = stdin.nextLine()...,没有例外或抛出错误。...+1  ”此时,Scanner任何调用都将结束程序,不会抛出异常或错误。“究竟在什么时候?程序在哪里结束? –  +1  我不认为你程序实际终止。我认为你控制台正在等待输入。

2.8K30
领券