subType.typeParameter.let(::println) 这个我也不懂

来源:9-2 实践:获取泛型实参

zippen

2024-10-26

不是说要打印typeParameter父类的类型吗?
因为typeParameter已经有lazy帮我们属性代理了,所以可以通过subType.typeParameter获取到父类的type类型;
然后这个.let(::println)我就不懂了,为啥不是直接println(subType.typeParameter)打印出来,而是使用let呢?
println这个函数作为参数传入了let里面是打印前面的东西吗?感觉好难理解这个的原理;可能是老师前面也没怎么讲let的用法吧,我只知道let可以在{}里面用it,你也没说可以在let()传进一个参数啊,也不知啥原理,
感觉应该是第一个参数可以变成let{::println},但是也不知道引用了这个函数为啥能打印前面的东西

写回答

7回答

bennyhuo

2024-10-27

另外,实在学不会,你也可以选择退款哈。
0
2
bennyhuo
回复
zippen
那。。好吧,我不太了解平台是怎么运营的,退不了就只能辛苦同学继续学了 :)
2024-10-28
共2条回复

bennyhuo

2024-10-27

同学很抱歉这部分内容你不理解。

let(::println)为什么能执行?
结合我们之前讲过的,我们完全可以这么写对吗?
let{  println(it)  }
let({ println(it) })

{ println(it) }的类型是 (T) ->Unit,这个作为 let的参数能理解吧?
println 的类型是 (Any) ->Unit,::println 作为 let的参数也是可以的。
这其实就是函数的类型的基本概念。

为什么能打印?

{ println(it) } 传入let之后要执行,::println传入之后也是会执行的。执行谁呢?当然是执行 println。
这其实就是函数引用的作用。

我建议同学去复习相关知识,其实就是觉得同学对这块儿内容还没有消化,需要多做一些实验感受一下。没有敷衍你的意思,我要是想敷衍你,完全没必要一个一个给你把视频找出来。

我这边跟很多同学都保持了私下联系,其实绝大多数同学对这个部分是没有疑问的,很多同学甚至嫌这些内容简单。课程内容设计也是为了兼顾更多同学的诉求。请同学多理解哈。

手机码字比较费劲,请同学多多包涵。我也是在认真回答你的,有问题提出来讨论,你跟我生气也解决不了问题,不是吗?
0
4
bennyhuo
回复
zippen
另外,我也很抱歉,同学如果遇到问题就直接说哪里不理解即可,问题越具体越方便我理解你的问题并给出答案。如果你说课程里面没有讲过,那我就肯定要找出来哪里介绍过这些知识点 :)
2024-10-28
共4条回复

bennyhuo

2024-10-26

同学,这些知识我们都有讲到,建议同学仔细从头学习,并且多多练习哈,基础扎实是进阶的必要条件。
0
3
zippen
如果说我基础知识不够的话,我怎么就能看得懂8-7和8-8呢?我看这个问题也有别的同学问,问得跟我一模一样,但是你也没有认真回答他,也没给他答案,谁不知道这个是函数引用啊?问题是作为参数传入到let里面,为啥能够打印subType的东西,到底是什么原理?我觉得你根本没讲清楚,作为老师不认真回答学生问题,总是让别人看你所指的视频,问题是你那个视频也没讲得很清楚啊,如果讲得很好就不会有第二个学生问同样的问题,这就是你回答上一个同学不认真导致的。我所需要的是你认真回答问题,不是发一堆你都讲不清楚的视频,还连续发了5条,看得我火大,其实我很想忍住不骂你,因为我问的上一个问题你也是这么敷衍,还是我靠ai才弄明白,要你何用?
2024-10-27
共3条回复

bennyhuo

2024-10-26

函数的类型和函数引用,见3-5节。
0
1
zippen
函数的引用我真的会啊。。无语了,不就是::带个函数名吗?。。。答非所问
2024-10-27
共1条回复

bennyhuo

2024-10-26

函数作为函数参数,见6-1节高阶函数
0
1
zippen
有时候看到你的回复真的有点生气,我是认真看了,但是你是真的没说啊,比如6-3的3分15秒,你就说了一下可以传入函数的引用,然后就跳过了呀
2024-10-27
共1条回复

bennyhuo

2024-10-26

let的用法我们在6-3节专门有讲解
0
1
zippen
老师,我又回去看了,你也没说啊,只说了X.let{ it} 里面的it表示的是X,X.apply{this}里面的this是X,只是很潦草的说了出来,然后就说了可以把函数的引用传进去,然后就啥也没说就跳过了,我不是没认真看,是你根本没说好吧。。。其实关于这几个内置的方法你都是草草略过的,只介绍了里面的it和this,哪里有说传入函数的引用有啥用?请你列举具体是哪一分钟哪一秒说了?就是没说啊
2024-10-27
共1条回复

bennyhuo

2024-10-26

let 函数的参数是个函数。
::println是 println函数的引用。
let(::println)就是把println的引用作为let的参数传入。
0
1
zippen
let(::println)就是把println的引用作为let的参数传入。这个我知道啊,只是为啥作为let的参数传入了之后就可以打印了?println后面也没有打印的东西啊,比如println("xxx")会打印xxx,但是只是把它作为引用传入let就能打印是我不能理解的
2024-10-27
共1条回复

学会Kotlin 突破开发语言瓶颈

如果有一门语言可以取代Java,那么它一定是Kotlin。

1760 学习 · 481 问题

查看课程