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。 如果最后一行是函数,则就成了函数中的函数,也就是高阶函数

稍微复杂一点

val testPlus = {number1: Int, number2: Int -> number1 + number2}

  • 这个函数中,number1和number2分别作为两个参数,函数的功能是number1+number2,则返回值的类型就是Int。相当于Java中的

public int testPlus(int number1, int number2) {

return number1 + number2;

}

再复杂一点

刚刚提到了,函数分为声明和实现两个部分。那么自然就可以先声明再实现。

先声明:

val getString : (Int) -> String

再实现:

getString = fun(number) = number.toString()

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

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

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

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

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

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
img

结语

网上高级工程师面试相关文章鱼龙混杂,要么一堆内容,要么内容质量太浅, 鉴于此我整理了上述安卓开发高级工程师面试题以及答案。希望帮助大家顺利进阶为高级工程师。
目前我就职于某大厂安卓高级工程师职位,在当下大环境下也想为安卓工程师出一份力,通过我的技术经验整理了面试经常问的题,答案部分是一篇文章或者几篇文章,都是我认真看过并且觉得不错才整理出来。

大家知道高级工程师不会像刚入门那样被问的问题一句话两句话就能表述清楚,所以我通过过滤好文章来帮助大家理解。

1307页字节跳动Android面试真题解析火爆全网,完整版开放下载

现在都说互联网寒冬,其实只要自身技术能力够强,咱们就不怕!我这边专门针对Android开发工程师整理了一套【Android进阶学习视频】、【全套Android面试秘籍】、【Android知识点PDF】。

师职位,在当下大环境下也想为安卓工程师出一份力,通过我的技术经验整理了面试经常问的题,答案部分是一篇文章或者几篇文章,都是我认真看过并且觉得不错才整理出来。

大家知道高级工程师不会像刚入门那样被问的问题一句话两句话就能表述清楚,所以我通过过滤好文章来帮助大家理解。

[外链图片转存中…(img-Fzp1H7JL-1711964695529)]

现在都说互联网寒冬,其实只要自身技术能力够强,咱们就不怕!我这边专门针对Android开发工程师整理了一套【Android进阶学习视频】、【全套Android面试秘籍】、【Android知识点PDF】。

本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐