Kotlin-改良的java(三)

Kotlin-改良的java(三)

20天打卡计划 day03

Kotlin-核心语法:

面向表达式编程:

表达式也是Kotlin中的重要概念,我们之前学过Lambda表达式,if表达式,函数体表达式等牛逼哄哄的表达式,这节重点介绍一下表达式的重要性,利用表达式来增强程序表达;

表达式定义:表达式可以是一个值,常量,变量,操作符,函数,或者他们之间的组合,编程语言对其进行解释和计算,以求产生另外一个值。

表达式的例子:

1
-1
1+1
listof(1,2,3)
"kotlin".length
{x:Int -> x + 1}  // lambda表达式 类型是(Int -> Int)
fun(x: Int) {println(x)} //匿名函数表达式 ,类型是Uint
if( x > 1) x else 1 //if else 表达式
面向表达式编程的优点:

1.更安全:

// Java程序
Sting a = null;
if(flag){
	a = "捞川";
}else{
	System.out.println("xxx");
}
//Kotlin程序
val a = if(flag) "捞川" else ""

品一品: 首先两个if的作用都是给a赋值,但是如果出现flag为假的情况,那么a就是空值,会报错,但是使用表达式编程就不存在不赋值的情况,我们可能犯的错误Kotlin帮我们杜绝掉了,而且代码更紧凑,在赋值的前提下,这种表达式比if else语句更加严谨和可读;

2.函数调用也是表达式:

Kotlin不接受一切皆表达式的概念但是引入了函数调用是表达式,Uint这个关键词我们之前见过很多次了,其实他是用来代替Java中的void的,void代表没有返回类型,但是Unit有返回类型,可以把它看作是(),用这种方式来实现诸如函数类型等高阶函数的操作;

枚举类:

enum class Day {
	MON,
	TUE,
	WEN,
	THU,
	FRI,
	SAT,
	SUN
}

与Java中的enum语法大体相似,多了一个class关键词,说明是一个类,可以定义构造方法以及额外的属性和方法:

enum class DayOfWeek( val day: Int) {
	MON(1),
	TUE(2),
	WEN(3),
	THU(4),
	FRI(5),
	SAT(6),
	; //如果是额外的方法或属性,必须加上分号
	fun getDayNumber() : Int {
		return day;
	}
}

when语法:

fun schedule(sunny: Boolean, day: Day) = when (day) {
	Day.SAT -> basketball()
	Day.SUN -> fishing()
	Day.FRI -> appointment()
	else -> when{
		sunny -> library()
		else -> study()
	}
}

一个完整的when表达式类似switch语句,花括号内是分支,每个分支由->连接,不再需要switch的break,由上到下匹配,一直到匹配完为止,否则执行else分支的逻辑,类似switch的default;

每个逻辑分支具有返回值,最终整个when表达式的返回类型就是所有分支相同的返回类型,或公共父类型。在上面的例子中,假设所有活动函数的返回值为Unit,那么编译器就会自动推导出when表达式的类型,即Unit,一下是一个非Unit的例子。

fun foo(a: Int) = when (a) {
	1 -> 1
    2 -> 2
    else -> 0
}
>>> foo(1)
1

今天太少了,明天补上。。。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值