Kotlin从头开始(一),大厂Android研发岗面试复盘

  • 先写的参数,再有的返回值,相对符合写法习惯

Lambda函数

函数,一般包括两个部分,一部分是函数的声明,另一个部分是函数的实现。上述写的getString方法中,fun getString(input: String) : String是函数的声明,括号中的就是函数的实现。

那么Kotlin中, 怎么写一个函数的声明呢?

var getString : (String) -> String

是不是看的一头雾水,如果写出对应的Java函数的话,应该是如下的样子:

public String getString(String inputStr)

对比不难发现,kotlin和java的输入,输出的类型,是可以对的上的,只不过是呈现的方式不同。

那如果返回的不是String,而是Any,对应Java中的返回值是什么呢?

答案就是Object。

tip:在Kotlin中,没有基本数据类型,只有引用数据类型(Int,Double…),但是在反编译成java字节码的时候,会变成int,double等。

到目前为止,只有函数的声明,还不能直接调用

如何写一个声明 + 实现的函数

var getString = {

println(“hello kotlin”)

}

  • 如上,就是一个包括了声明和实现的函数

如果在kotlin中看不懂,我们写出同等的java代码看看,分析一下,功能就是简单的打印hello kotlin:

public void getString() {

System.out.println(“hello kotlin”);

}

值得注意的是,Kotlin的类型推导帮助我们省略了函数的类型,其实写全了是如下的样子:

var getString : () -> Unit = {

println(“hello kotlin”)

}

此处有没有一点疑惑,为什么类型推导得出的类型是 () -> Unit ?

此时只要回头看一下Kotlin中函数是如何声明的,就知道为什么了。

为什么这里的函数不是fun开头的

  • 其实这里的函数是匿名函数,上述的写法就是把这个匿名函数赋值给了变量。

  • 可以直接使用变量名进行调用或者使用invoke,方式如下:

fun main() {

val getString : () -> Unit = {

println(“hello kotlin”)

}

getString()

getString.invoke()

}

  • 两种方式都可以成功调用,这里的()其实是invoke操作符的重载。

var getString = {“this is kotlin”} 是什么意思

跑一下上面的代码,看看运行结果是啥

fun main() {

val getString = {

“hello kotlin”

}

print(getString.invoke())

}

  • 结果打印了hello kotlin。

  • 在括号中,最后一行将会作为返回值。如果把代码修改为下面的样子

fun main() {

val getString = {

“hello kotlin”

666

}

print(getString.invoke())

}

返回值就成了666。 如果最后一行是函数,则就成了函数中的函数,也就是高阶函数

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

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

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

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
img

最后

为了方便有学习需要的朋友,我把资料都整理成了视频教程(实际上比预期多花了不少精力),由于篇幅有限,都放在了我的GitHub上,点击即可免费获取!

Androidndroid架构视频+BAT面试专题PDF+学习笔记

当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。

  • 无论你现在水平怎么样一定要 持续学习 没有鸡汤,别人看起来的毫不费力,其实费了很大力,这四个字就是我的建议!!
  • 我希望每一个努力生活的IT工程师,都会得到自己想要的,因为我们很辛苦,我们应得的。

当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。

无论你现在水平怎么样一定要 持续学习 没有鸡汤,别人看起来的毫不费力,其实费了很大力,没有人能随随便便成功。

,其实费了很大力,这四个字就是我的建议!!

  • 我希望每一个努力生活的IT工程师,都会得到自己想要的,因为我们很辛苦,我们应得的。

当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。

无论你现在水平怎么样一定要 持续学习 没有鸡汤,别人看起来的毫不费力,其实费了很大力,没有人能随随便便成功。

加油,共勉。

  • 18
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值