Forwarded from Oasis Feng
大部分都是纯 Java 的库,但 Android 开发用的很普遍的,比如 GSON。
Forwarded from dnaugsuz
🤔 关于 boxing 感觉最普遍的理解是 IntArray vs. Array<Int> ,前者 unboxed
不过也有 int vs. Integer 的,应该说最准确的概念是「primitive值还是引用」,虽然 Java 里也没有
不过也有 int vs. Integer 的,应该说最准确的概念是「primitive值还是引用」,虽然 Java 里也没有
Integer.setValue
所以说不能脱离 Kotlin/JVM 的后端谈 boxing,因为只有 Java 存在 primitive 的概念,正如 Kotlin 也没 fieldForwarded from dnaugsuz
我不知道啥是
它能在编译期内联所有
inline class 啊它能在编译期内联所有
val 内部的 fun 吗inline class 的 this 是存在哪里,能把所有属性内联进去吗Forwarded from dnaugsuz
C++ 的 template 被学计算机图形学的人觉得编译期开销太大,据说有的人引几个项目,结果 32G 相当的机器编译都要 4 小时以上
Forwarded from dnaugsuz
呃…… 比如说,一些 "cutting edge abstraction" 吧
记得当时举的例子有一个
记得当时举的例子有一个
inline class Point ,但我没看懂它到底起啥用Forwarded from dnaugsuz
那样的话感觉和 scala 的 implicit constructor 和原有的 extension member 没有啥区别啊……
Forwarded from Mivik Q
差不多想到为什么inline class不能多个基础成员,估计又是兼容jvm反射的参数调用之类…
Forwarded from dnaugsuz
inline class DoggoId(val id: Long)
data class Doggo(val id: DoggoId, … )// usage
val goodDoggo = Doggo(DoggoId(doggoId), …)
fun pet(id: DoggoId) { … } 这么看它是
typealias 的扩充,和 Haskell 里的 newtype 有点像Forwarded from dnaugsuz
是的,我经常
但是
typealias Cnt = Int (例如 val Sized.size: Cnt)但是
>=0 检查怎么做到 compile time,而且这往往是编译期无法推断的Forwarded from dnaugsuz
没听说过,看起来不是我开始想的那样
我开始的时候是想给自己的 github.com/ParserKt 用上这个 trick 的,然后性能估计就可以赶对面的 scala fast-parse
但是既然主要是编译期,而且还 exactly one field…… 感觉和幻想有点差距,而且 one field 里的 property 肯定是不能内联的,我刚才想的是
我开始的时候是想给自己的 github.com/ParserKt 用上这个 trick 的,然后性能估计就可以赶对面的 scala fast-parse
但是既然主要是编译期,而且还 exactly one field…… 感觉和幻想有点差距,而且 one field 里的 property 肯定是不能内联的,我刚才想的是
inline class = >1 * inline funsGitHub
ParserKt
Naive one-pass recursive descent parser framework for Kotlin - ParserKt
Forwarded from dnaugsuz
是啊,这应该可以支持了吧
不过 reified 好像和 inline 没关系啊…… 啊,不对,就可以
不过 reified 好像和 inline 没关系啊…… 啊,不对,就可以
Array<T> 了