关于标签
在kotlin中使用过标识符跟@
符号来定义一个标签,使用@
符号后面跟标识符来引用一个标签
在kotlin中每一个函数都与一个或多个地址对应,而每个变迁也是与一个或多个地址对应,所以函数本身就是一个标签
由于匿名还属没有函数名,那么我们可以自定义一个标签来指向这个函数地址
This表达式
在Kotlin,有时候需要调用自身的函数或者变量,会用到this
表达式
1、在类的成员中,this
指的是该类的当前对象
2、在扩展函数或者带接受者的函数字面值中,this
表示在点左侧传递的接收者参数
3、如果this
没有限定符,它指的是最内层的包含它的作用域。要引用其他作用域中的this
,请使用 标签限定符
关于标签的指向:
下面会用this演示标签的指向:
调用
当我们在调用
ThisInnerClass
的test()
函数的时,会调用foo
的扩展函数在
foo
函数中 我们将a
指向ThisClass
,b
指向ThisInnerClass
,b1
指向了ThisInnerClass的变量message
,c1
只想扩展函数foo
,从打印结果我们可以看出:
a
是ThisClass
的地址,b
是ThisInnerClass
的地址b1
指向的是ThisInnerClass
对象的变量message
c1
指向的是函数foo
点左侧的接收者参数而c是当前作用域的对象的值,即同
foo
函数
关于标签处返回 return标签
上面说到每个函数既是标签
当我们return@forEach
的时候那么我们就会推出当前循环,打印结果如下
而我们
return@returnTest
的时候,作用于就发生了改变,return
的是returnTest
函数,所以打印的结果如下
关于标签出跳出 break 和continue
当我们在做循环的时候 如果break跟标签
的话,那么他就会指向相应的循环
如下:
我们在
break跟@loopInner
指向的是内层循环,跳出的是内层循环,so 结果如下:而当我们break跟外层循环标签时,如下:
他跳出的就是指向的外层循环,结果如下:
网友评论