CODE函数-英雄云拓展知识分享
137
2023-10-25
【摘要】 本书摘自《基于Kotlin的Android应用程序开发》一书中第1章,第3节,由薛岗编著。
1.3.13 拆分结构
拆分结构的基本结构为 (变量或常量名,变量或常量名, …,变量或常量名)。拆分结构可实 现对一个对象中的多个数据项分拆使用。例如,在下列程序中, 一个Object 对象中的数据项被分 别设置到a、b 和 c 变量中。
data class Object(var it1: String, var it2: Int, var it3: Float)
3 fun main(args: Arrayvar obj = Object("item",1,0. 1f)
var(a,b,c)= obj
println(a+":"+b+":"+c)
7 1
拆分结构还可在循环语句中使用,例如for(i,j) in collection){…};此外,针对 Kotlin 的 Map 对象也可以拆分结构。
拆分结构还可在方法的返回值中使用,例如:
1 data class Object(var itl: String, var it2: Int, var it3: Float)
2 fun func():Object{
3 return Object("return",2,0.2f) 4 }
5 fun main(args: Array6 var(d, e,f)= func()
println(d+":"+e+":"+f)
8 )
在拆分结构中,如果不使用某个变量或常量,可使用符号 (下画线)进行说明。例如, C,e, f)=func()语句所运行的结果只包含两个值,分别为e 和 f所指代的值。
1.3.14 嵌套类和内部类
类可以在另一类的内部进行定义,这样的类称为嵌套类。与此相似,还可在一个类的内部定 义内部类(也叫 inner类)。两者的区别在于,嵌套类可通过外部类名来进行访问,而内部类必须 通过外部类的实例来访问。例如,在下列程序中, A 类中定义了一个嵌套类 B; 而 AA 类中定义 了一个内部类 BB;B 类是通过A.B 的方式进行访问的,而BB 类是通过AA().BB 的方式进行访 问的:
1 class A{
2 class B{) 3 }
4 claSs AA{
5 inner class BB{}
6
7 fun main(args: Array8 val c = A.B()
val Cc = AA().BB()
10 }
一个类中还可使用匿名内部类,定义时需要使用“对象表达式”。
1.3.15 枚举类
枚举类被用于组织一组相互关联且类型相同的常量,例如,针对一周中的7天,可将周一至
周日按常量的方式组织成一个枚举类。枚举类定义格式为:
enum class 类名{
项目1,项目2, … ,项目n
例如:
1 enum class Transports{
2 car,airplane, boat 3 )
枚举类的使用方法为枚举类名.项目名,如Transports.car。枚举类中每个项目的位置都可通过
ordinal属性获得,如Transports.car.ordinal。枚举类中的项目还可进一步指定属性值,例如:
1 enum class Transports(val s: Int){
2 car(60),airplane(1000),boat(40)
3
上述示例程序中,枚举类为Transports,其元素为 car、airplane和 boat,且它们被指定了具体
的属性值,这些值被访问的方式类似于Transportans.boat.s。
1.3.16 this 操作符
操作符this一般指代本类的实例。 Kotlin中 的this在使用时还可有更多的操作,例如:
class SimpleClass{
val s="sa"
3
class Outer{
var o = 1
fun func(){
this@outer.o //this@outer 是指 Outer 的实例
this.o //this是指 Outer 的实例
9 }
10 inner class Inner{
11 val i="i"
12 fun func(){
13 this.i //this是指Inner 的实例
14 this@Inner.i //this@Inner是指Inner 的实例
15 this@outer.o //this@outer是指Outer 的实例
16
fun SimpleClass.service(){
this.s //this 是指 simpleClass 的实例
19 this@service.s //thiseservice是指simpleClass 的实例
20 this@Outer.o //this@outer是指 Outer 的实例
21 this@Inner.i //this@Inner是指Inner 的实例
22
}
上述示例程序中, this 在不同的语境中所指代的实例不尽相同。首先,需要特别说明的是: 在类内部定义的其他类扩展方法时, this 是指代被扩展类的实例,例如, SimpleClass.service 方法 中的 this 是指代 SimpleClass实例;其次,由于this在程序中具有不同的含义,可在 this后可使用 @操作符来进行实例的定位。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~