【100 种语言速成】第 5 节:Kotlin

if (n < 3) {

return 1

} else {

return fib(n - 1) + fib(n - 2)

}

}

fun main() {

for (i in 1…30) {

println(fib(i))

}

}




[]( )FizzBuzz

-------------------------------------------------------------------



Kotlin 抛弃了 C 风格 `switch`,引入了 `when` 语法,这有点类似于 Haskell 风格的模式匹配。



fun fizzbuzz(n: Int): String {

return when {

n % 15 == 0 -> "FizzBuzz"

n % 3 == 0 -> "Fizz"

n % 5 == 0 -> "Buzz"

else -> n.toString()

}

}

fun main() {

for (i in 1…100) {

println(fizzbuzz(i))

}

}




[]( )统一码

--------------------------------------------------------------



由于 Kotlin 在底层基本上就是 Java,它仍然不能在基本平面之外正确处理 Unicode,所以最后一个答案是错误的:



fun main() {

println(“Hello”.length)

println(“Źółw”.length)

println(“💩”.length)

}




输出



5

4

2




[]( )数据类

--------------------------------------------------------------



Java 使得处理几乎任何类型的数据都变得非常乏味。每个简单的数据类都需要显式的构造函数、getter、setter、hashcode 和 equals。你甚至不能使用`==`, 你需要运行`.equals()`,但如果其中一方为空,那将真的崩溃,所以你需要先对双方进行空检查,然后`.equals()`。基本数据操作的样板数量太荒谬了。



Kotlin 避免了几乎所有这些废话:



data class Point(val x: Double, val y: Double) {

fun length() = Math.sqrt(x * x + y * y)

}

fun main() {

val a = listOf(1, 2, 3)

val b = listOf(1, 2, 3)

val c = Point(30.0, 40.0)

val d = Point(30.0, 40.0)

println(a == b)

println(c == d)

println(null == d)

println(“len of ${c} is ${c.length()}”)

}




输出



true

true

false

len of Point(x=30.0, y=40.0) is 50.0




我们仍然需要使用`listOf(1, 2, 3)`而不是`[1, 2, 3]`,如果我们尝试了它会抱 Point(30, 40),但这还不错。



[]( )函数式编程

----------------------------------------------------------------



我们如何在 Kotlin 中执行 `map`、`filter` 和 `reduce` ?它看起来像带有`{ arguments -> ... }`块的 Ruby。有趣的是,如果您传递一个不带任何参数的块,它会将其视为具有默认值 `{ it -> ... }`。 这是一个罕见的特性,在 Perl 中最为显着,它被称为更神秘的 `$_`。



fun main() {

val alist = listOf(1, 2, 3, 4, 5)

println(alist.map{ x -> x * 2 })

println(alist.map{ it * 2 })

println(alist.filter{ it % 2 == 1 })

println(alist.reduce{ a, b -> a + b })

}

 **自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**

![img](https://img-blog.csdnimg.cn/img_convert/8aa1d329fa4719d765b00d00698fc9b8.png)

![img](https://img-blog.csdnimg.cn/img_convert/05f985418519bcc60fd5dc66cd30310f.png)

![img](https://img-blog.csdnimg.cn/img_convert/991117257f45d1fa2cde59d8c95f09b2.png)

![img](https://img-blog.csdnimg.cn/img_convert/16765ba89d5a05584a0cba9e1301e969.png)

![img](https://img-blog.csdnimg.cn/img_convert/6c361282296f86381401c05e862fe4e9.png)

![img](https://img-blog.csdnimg.cn/img_convert/9f49b566129f47b8a67243c1008edf79.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!**

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)**

sdnimg.cn/img_convert/9f49b566129f47b8a67243c1008edf79.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!**

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)**

![](https://img-blog.csdnimg.cn/img_convert/c5f1eafa5593ff4958227b8af3122921.jpeg)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值