当前位置:首页 > 时尚 >

10个简单有趣代码(最简单的10个代码)

来源:原点资讯(www.yd166.com)时间:2022-12-28 16:40:18作者:YD166手机阅读>>

这是海外一位 Kotlin GDE 大佬,在 Twitter 上分享的一段代码,我觉得非常的有意思,代码如下所示,我们花 10s 思考一下,输出结果是什么。

fun printE() = { println("E") } fun main() { if (true) println("A") if (true) { println("B") } if (true) { { println("C") } } { println("D") } printE() when { true -> { println("F") } } }

在 Twitter 评论区中也能看到很多不同的答案。

10个简单有趣代码,最简单的10个代码(1)

实际上最后输出结果如下所示。

A B F

不知道你第一次看到这么多混乱的花括是什么感觉,当我第一次看到这段代码的时候,我觉得非常的有意思。

如果在实际项目中有小伙伴这么嵌套花括号,我相信肯定会被拉出去暴晒。但是细心观察这段代码,我们能学习到很多 Kotlin 相关的知识点,我们先来说一下为什么最后输出的结果是 A B F。

下面图中红色标注部分,if 表达式、 when ... case 表达,如果表达式内只有一行代码的话,花括号是可以省略的,程序执行到代码位置会输出对应的结果, 即 A B F。

10个简单有趣代码,最简单的10个代码(2)

那为什么 C D E 没有打印,因为图中绿色部分是 lambda 表达式,在 Kotlin 中 lambda 表达式非常的自由,它可以出现在很多地方比如方法内、 if 表达式内、循环语句内、甚至赋值给一个变量、或者当做方法参数进行传递等等。

lambda 表达式用花括号包裹起来,用箭头把实参列表和 lambda 函数体分离开来,如下所示。

{ x: Int -> println("lambda 函数体") }

如果没有参数,上面的代码可以简写成下面这样。

{ println("lambda 函数体") }

而 C D E 的输出语句在 lambda 函数体内, lambda 表达式我们可以理解为高阶函数,在上面的代码中只是声明了这个函数,但是并没有调用它,因此不会执行,自然也就不会有任何输出。现在我将上面的代码做一点点修改,在花 10s 思考一下输出结果是什么。

fun printE() = { println("E") } fun main() { if (true) println("A") if (true) { println("B") } if (true) { { println("C") }() } { println("D") }() printE()() when { true -> { println("F") } } }

最后的输出结果是:

A B C D E F

应该有小伙伴发现了我做了那些修改,我只是在 lambda 表达式后面加了一个 (),表示执行当前的 lambda 表达式,所以我们能看到对应的输出结果。如下图所示,

10个简单有趣代码,最简单的10个代码(3)

lambda 表达式最终会编译成 FunctionN 函数,如下图所示。

10个简单有趣代码,最简单的10个代码(4)

栏目热文

最简洁明了零基础看懂代码(自学程序员怎么入门)

最简洁明了零基础看懂代码(自学程序员怎么入门)

写了这么久的代码,第一次思考计算机是怎么认识自己写的代码并执行的一个代码到底是怎么执行起来的?CPU内部到底是怎么工作的...

2022-12-28 16:23:44查看全文 >>

怎么才能最简单的看懂代码(怎样快速理解代码)

怎么才能最简单的看懂代码(怎样快速理解代码)

能看懂代码,需要掌握一门编程语言的语法以及代码逻辑,能够看万行代码,需要你对代码的架构和框架有一定的认知。如何阅读代码?...

2022-12-28 16:15:08查看全文 >>

熟记100个字母代码(各种代码大全)

熟记100个字母代码(各种代码大全)

万图思瑞记忆法代码表(2-110)是万图思瑞记忆法的基石,领悟并熟练地使用记忆法代码,将给我们的学习、工作、生活带来意想...

2022-12-28 16:22:53查看全文 >>

灶台抹布如何清洗干净(擦灶台的抹布又脏又油怎么办)

灶台抹布如何清洗干净(擦灶台的抹布又脏又油怎么办)

欢迎来到“花花优选”,每天为您提供专业的养花知识和养花技巧!喜欢的花友点击关注!每个周末的时候都喜欢将家里好好的打扫一下...

2022-12-28 16:47:46查看全文 >>

怎样清洗抹布最干净不用小苏打(怎么洗抹布最干净不用小苏打)

怎样清洗抹布最干净不用小苏打(怎么洗抹布最干净不用小苏打)

导语:抹布用久了又脏又臭,别用热水烫!现在流行这样做,干净又杀菌在我们日常生活中,只要是清洁大的卫生就会用到抹布。但是日...

2022-12-28 16:59:20查看全文 >>

100个特殊符号代码(特殊符号可复制粘贴)

100个特殊符号代码(特殊符号可复制粘贴)

1.₍˄.͡˳̫.˄₎ฅ˒˒2.˃̣̣̥᷄⌓˂̣̣̥᷅3.つ♡⊂4.ଲଇଉକ5.Life u =♡6.∪^∪7.•ᴥ...

2022-12-28 16:35:04查看全文 >>

c语言顺口溜(c语言顺口溜口诀)

c语言顺口溜(c语言顺口溜口诀)

运算优先级口诀C语言中每种同类型的运算符都有内部的运算符优先级,不同类型的运算符之间也有相应的优先级顺序。牢固的记忆整个...

2022-12-28 17:01:24查看全文 >>

g代码顺口溜(简单好玩的编程代码)

g代码顺口溜(简单好玩的编程代码)

大家好,我是你们的好朋友美丽,转眼间忙忙碌碌的一月就过去了,现在迎来了崭新的二月,在这里祝我的粉丝朋友们,二月,瑰丽人生...

2022-12-28 16:52:59查看全文 >>

c语言代码大全和详细解释(c语言必背代码大全加翻译)

c语言代码大全和详细解释(c语言必背代码大全加翻译)

这些都是基本的 C 程序,可以帮助刚踏入 C 编程世界的新手。快来试试吧:1、C 语言编程 – Hello World...

2022-12-28 17:04:20查看全文 >>

c语言必背18个经典程序(c语言顺口溜)

c语言必背18个经典程序(c语言顺口溜)

这些都是基本的 C 程序,可以帮助刚踏入 C 编程世界的新手。快来试试吧:1、C 语言编程 – Hello World...

2022-12-28 16:46:42查看全文 >>

文档排行