ad

通过《基于Kotlin的Android应用程序开发》_与成功更近一步_1.3.13 拆分结构

admin 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: Array){

var obj = Object("item",1,0. 1f)

var(a,b,c)= obj

通过《基于Kotlin的Android应用程序开发》_与成功更近一步_1.3.13 拆分结构

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: Array){

6 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: Array)(

8 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小时内删除侵权内容。

上一篇:通过《基于Kotlin的Android应用程序开发》_与成功更近一步_1.1.2 包
下一篇:通过《基于Kotlin的Android应用程序开发》_与成功更近一步_1.1 基本语法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×