Python中双冒号作用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python中双冒号作用相关的知识,希望对你有一定的参考价值。
参考技术A Python sequence slice addresses can be written as a[start:end:step] and any of start, stop or end can be dropped .Python序列切片地址可以写为 [开始:结束:步长],其中的开始和结束可以省略
1. range(n)生成[0,n)区间整数
2. 开始start省略时,默认从第0项开始
3. 结尾省略的时候,默认到数组最后。
4. 开始和结尾不省略的时候
5. 步长step=n;代表从start开始(start也算)每隔step间隔,取一个数,一直到结尾end
6. 当step等于负数的时候,从右向左取数。
Kotlin学习之双冒号
Kotlin学习之双冒号
最新在复习kotlin相关的知识,看到一个平时不注意的点,就是::的使用,平时开发使用都是IDE提示,顺手一改,今天复习看到了这个知识点,就顺手复习记录一下
::定义
Kotlin 中 双冒号操作符 表示把一个方法当做一个参数 ,传递到另一个方法中进行使用,通俗的来讲就是引用一个方法。先来看一下例子:
object KotlinLearn
@JvmStatic
fun main(args: Array<String>)
val testInstance = Test()
print(lock("a","m", ::getResult))
print(lock("a","m", testInstance::test))
fun getResult(str1: String, str2: String): String = "result is $str1 , $str2"
fun lock(p1: String, p2: String, method: (str1: String, str2: String) -> String): String
return method(p1, p2)
fun lock(p1: String, p2: String, method: () -> Boolean): String
return if (method()) "false" else "true"
/**
* 另外一个类
*/
class Test
fun test():Boolean
print("测试::")
return false
fun lock(p1: String, p2: String, method: (str1: String, str2: String) -> String): String
return method(p1, p2)
fun lock(p1: String, p2: String, method: () -> Boolean): String
return if (method()) “false” else “true”
这两个方法分别需要一个lamda表达式,一个是两参数String,并且返回String的,一个是无参函数,返回boolean类型的。
这样,这两个函数就可以以::形式传参 并传入我们的getResult 和 test函数。
这里有一点需要注意的就是,如果在同一个类里的方法,可以直接::method,但是如果在另一个类里面,就需要另一个类的实例::method 了。
a::method 和 a.method 一样吗
首先,肯定不一样的,但是在学习过程中我以为是一样的,所以走了弯路,比如代码这么写的时候
if (testInstance::test)
print(true)
我以为会和普通方法调用一样
if (testInstance.test())
print(true)
但其实根本不一样 啊,所以看一下定义
Kotlin 中 双冒号操作符 表示把一个方法当做一个参数 ,传递到另一个方法中进行使用,通俗的来讲就是引用一个方法
这种写法只是一个参数。需要传递到另一个方法中使用,所以千万不要混淆~~
特此记录。
以上是关于Python中双冒号作用的主要内容,如果未能解决你的问题,请参考以下文章