Kotlin 中 双冒号操作符 表示把一个方法当做一个参数,传递到另一个方法中进行使用,通俗的来讲就是引用一个方法。先来看一下例子:

fun main(args: Array) {

println(lock("param1", "param2", ::getResult))

}

/**

* @param str1 参数1

* @param str2 参数2

*/

fun getResult(str1: String, str2: String): String = "result is {$str1 , $str2}"

/**

* @param p1 参数1

* @param p2 参数2

* @param method 方法名称

*/

fun lock(p1: String, p2: String, method: (str1: String, str2: String) -> String): String {

return method(p1, p2)

}

这里需要注意的是,lock 函数 的第三个参数传入 method 时,要确定参数个数、类型、返回值都和其形参一致。

输出结果:

result is {param1 , param2}

如果我们需要调用其他 Class 中的某一个方法是:

写法为:

fun main(args: Array) {

var d = Test()

println(lock("param1", "param2", d::getResult))

}

我们在 Class 中的某个方法中使用双冒号调用当前 Class 的内部方法时调动方式为:

class Test1 {

fun isOdd(x: Int) = x % 2 != 0

fun test() {

var list = listOf(1, 2, 3, 4, 5)

println(list.filter(this::isOdd))

}

}

一般情况,我们调用当前类的方法 this 都是可省略的,这里之所以不可省略的原因是

为了防止作用域混淆 , :: 调用的函数如果是类的成员函数或者是扩展函数,必须使用限定符,比如this

如果把 isOdd 写到 class 外部 (全局) 这里也是可以省略限定符。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

android 中文冒号,Kotlin中双冒号::使用方法相关推荐

  1. html中两个冒号,css中双冒号和单冒号区别

    :--是指的伪类 ::--是指的伪元素 1.字面意思: 伪类,1.css中有类选择器,某些元素并未定义类名,就可以通过伪类赋予样式,如:[:nth-child(n)]:2.伪类可以应用于元素执行某种状 ...

  2. Python中双冒号的作用[::]

    Python中双冒号的作用[::] Python sequence slice addresses can be written as a[start:end:step] and any of sta ...

  3. python中双冒号[::]切片的作用

    如:a=[1,2,3.4,5] 我们写:print(a[x:y:z])时,x表示切片起点,y表示切片终点,z表示步长.如果不指定x和y,则默认开始和最后(-1倒序除外),如果不指定z,则默认步长为1. ...

  4. java中双冒号的用法

    java中双冒号的使用,即方法引用 构造器调用 Class类::new 特定对象的方法调用 instance::method 类的静态方法调用 Class::static method 任意对象的方法 ...

  5. html语言中的双冒号,::before 和:after 中双冒号和单冒号有什么区别?解释一下这 2 个伪元素的作用...

    标题:::before 和:after 中双冒号和单冒号有什么区别?解释一下这 2 个伪元素的作用? 相关知识点: 单冒号(:)用于CSS3伪类,双冒号(::)用于CSS3伪元素.(伪元素由双冒号和伪 ...

  6. C++中双冒号::的作用浅析

    转载自:https://www.jb51.net/article/142032.htm C++中双冒号::的作用浅析 更新时间:2018年06月14日 11:59:12   作者:yz930618 在 ...

  7. ::before 和 :after中双冒号和单冒号有什么区别?解释一下这2个伪元素的作用?

    ::before 和 :after中双冒号和单冒号的区别以及2个伪元素的作用 ::before 和 :after中双冒号和单冒号有什么区别?解释一下这2个伪元素的作用 实例 实例 ::before 和 ...

  8. php中的冒号应用,php中双冒号的应用

    php类代码中常看到"::"的操作符,这个是作用域限定操作符,是用一个双冒号"::"表示,它用来置顶类中不同作用域的级别.左边是作用域右边是访问作用域的成员. ...

  9. python中双冒号_c++中冒号(:)和双冒号(::)的用法和c/c++ 位域结构体

    1.冒号(:)用法 (1)表示结构体内 位域的定义(即该变量占几个bit空间) typedef struct _XXX{ unsigned char a:4; unsigned char c; }XX ...

  10. php类中双冒号和-的区别

    就是为了区分对象的方法和属性,和是访问类的静态方法和静态变量,类的静态方法和静态变量是类公用的,不需要实例化也能访问,而对象的方法和属性是每个对象特有的,因此必须先实例化.其他语言如C++,JAVA等 ...

最新文章

  1. 给你一些点与线,只用动画就能看懂张量乘法,还能证明迹循环定理
  2. ACM Computer Factory
  3. C#中使用DateTimePicker控件显示修改日期时间
  4. Git与Github操作指南(入门)
  5. 使用Disruptor实现生产者和消费者模型
  6. Android中垃圾回收日志信息
  7. 习题2.4 递增的整数序列链表的插入(15 分)浙大版《数据结构(第2版)》题目集...
  8. Inno_Setup使用笔记(简单完成安装包制作)
  9. React开发(173):ant design设置额外的展开行
  10. 非递归求解N皇后问题(回溯法)
  11. RAR for Linux 命令详解
  12. 手把手教你学dsp_大咖问答第13期:如何掌握DSP设计?顾卫钢博士在线为你解答...
  13. 什么是利亚诺夫指数?Lyapunove指数 李雅普诺夫指数
  14. 淘宝大秒系统设计详解
  15. 如何使用CANoe和CANalyzer中的Diagnostics/ISO TP
  16. python 频数分布,频率分布
  17. 静听网+python爬虫+多线程+多进程+构建IP代理池
  18. 过滤器(7)_过滤器处理 POST 请求乱码
  19. 实验3-5 查询水果价格
  20. oracle 查看表空间使用情况

热门文章

  1. 物联网应用案例,中易云真实搭建项目
  2. 为什么python叫爬虫_python为什么叫爬虫
  3. Windows 和 Linux 的免费媒体播放器 - SMPlayer
  4. 小白入门isp数据流走向一
  5. git memery 后 push到远程,如何回滚
  6. OSChina 周四乱弹 ——程序员们离职的理由。
  7. Selenium初级 | 使用navigate系列方法操作网页
  8. 阿里巴巴矢量图标引用问题
  9. css绘制星星闪烁,CSS3 闪烁的星星
  10. html tbody边框,tbody边框呈现问题