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
另外,实在学不会,你也可以选择退款哈。022024-10-28 -
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。
这其实就是函数引用的作用。
我建议同学去复习相关知识,其实就是觉得同学对这块儿内容还没有消化,需要多做一些实验感受一下。没有敷衍你的意思,我要是想敷衍你,完全没必要一个一个给你把视频找出来。
我这边跟很多同学都保持了私下联系,其实绝大多数同学对这个部分是没有疑问的,很多同学甚至嫌这些内容简单。课程内容设计也是为了兼顾更多同学的诉求。请同学多理解哈。
手机码字比较费劲,请同学多多包涵。我也是在认真回答你的,有问题提出来讨论,你跟我生气也解决不了问题,不是吗?042024-10-28 -
bennyhuo
2024-10-26
同学,这些知识我们都有讲到,建议同学仔细从头学习,并且多多练习哈,基础扎实是进阶的必要条件。032024-10-27 -
bennyhuo
2024-10-26
函数的类型和函数引用,见3-5节。012024-10-27 -
bennyhuo
2024-10-26
函数作为函数参数,见6-1节高阶函数012024-10-27 -
bennyhuo
2024-10-26
let的用法我们在6-3节专门有讲解012024-10-27 -
bennyhuo
2024-10-26
let 函数的参数是个函数。
::println是 println函数的引用。
let(::println)就是把println的引用作为let的参数传入。012024-10-27
相似问题