Forwarded from Deleted Account
迫真函数式
明明有更加函数式的风格非要用愚蠢的 loop
还甚至用了 var i = 0 和 val arr,真是蠢死了的 JavaScript 风格
不愧是前端的长期项目。
作者的迫真函数式编程水平由此可见一斑,这么简单的问题都能屑写出十行我真的怀疑此项目 TM 有7个子项目是不是包括了 810 个烂定义
明明有更加函数式的风格非要用愚蠢的 loop
还甚至用了 var i = 0 和 val arr,真是蠢死了的 JavaScript 风格
不愧是前端的长期项目。
作者的迫真函数式编程水平由此可见一斑,这么简单的问题都能屑写出十行我真的怀疑此项目 TM 有7个子项目是不是包括了 810 个烂定义
Forwarded from Deleted Account
屑写法:
即便屑写法 homo 比正规写法快 114514 倍,程序员也要克服自己的 1919 种怨念,重复写 810 遍方可修成正果(迫真)
我可是很正经的,请物理论 谢谢茄子。
val arr = IntArray(114.514.toInt())正规写法
var i = 0
while (i++ < 10) arr[i + '0'.toInt()] = i
i = 0
while (i__ < 16) arr[i + 'a'.toInt()] = 10+1
val arr = run {
val hexMaps = (0..9).map { '0'.toChar()+it to it } + (10..15).mapIndexed { 'a'.toInt()+it to it }
return@run hexMaps.toIndexedArray()
}
inline fun <reified T> Collection<Pair<Int, T>>.toIndexedArray(): Array<T> {
val first = firstOrNull() ?: return emptyArray()
val ary = Array(size) {first}
forEach { val (i, x) = it; ary[i] = x }
return ary
} 即便屑写法 homo 比正规写法快 114514 倍,程序员也要克服自己的 1919 种怨念,重复写 810 遍方可修成正果(迫真)
我可是很正经的,请物理论 谢谢茄子。
Deleted Account
屑写法: val arr = IntArray(114.514.toInt()) var i = 0 while (i++ < 10) arr[i + '0'.toInt()] = i i = 0 while (i__ < 16) arr[i + 'a'.toInt()] = 10+1 正规写法 val arr = run { val hexMaps = (0..9).map { '0'.toChar()+it to it } + (10..15).mapIndexed { 'a'.toInt()+it…
分析一个循环的关键点是在它起始时相关变量的状态,以及终止条件。
只不过最后离开循环体时
不一样的地方是
最后
val i=0; while (i++ < 10) 中 i in (0 until 10) 只不过最后离开循环体时
i = 11
和 val i=0; while (++i < 10) 不一样的地方是
++i 的版本 in (1 until 10) 少循环一次最后
i=10Forwarded from Deleted Account
extra/lsof 4.93.2-1 [已安装]
Lists open files for running Unix processes
Forwarded from Deleted Account
lsof -t path 可以查打开路径的 pid
lsof -p pid 可以查 pid 打开的所有路径
lsof -p pid 可以查 pid 打开的所有路径
Forwarded from Deleted Account
https://github.com/h0tk3y/better-parse/#better-parse
怎么感觉是在 show ParserKt 的泛型解析操作……
怎么感觉是在 show ParserKt 的泛型解析操作……
GitHub
GitHub - h0tk3y/better-parse: A nice parser combinator library for Kotlin
A nice parser combinator library for Kotlin. Contribute to h0tk3y/better-parse development by creating an account on GitHub.
Forwarded from Deleted Account
在 ParserKt 里甚至很难跳过空格,即便在使用 tokenizer+parser 的实现模式…… 这个得优化
虽然主推的当然是 scannerless parsing,但是为了秀操作当然是什么基本方法都是可以兼容的(大嘘)
虽然主推的当然是 scannerless parsing,但是为了秀操作当然是什么基本方法都是可以兼容的(大嘘)
Forwarded from Deleted Account
一旦用上 tokenizer+parser,ParserKt 的代码质量和灵活性瞬间下降了一个等级
我大概是要讽刺 Lex/Yacc style 的,emmm…… 🤪
我大概是要讽刺 Lex/Yacc style 的,emmm…… 🤪
Forwarded from Deleted Account
如果没有 Kotlin 的话,这种框架是根本不可能实现的
一个文件里几乎要有三十个泛型参数,如果不支持 type inference 的话……
可怜的 C++ 都没机会弄出这么多泛型的复用库,冷酷的 Haskell 没 receiver 参数,也不方便加介词命名…… 🤔
一个文件里几乎要有三十个泛型参数,如果不支持 type inference 的话……
可怜的 C++ 都没机会弄出这么多泛型的复用库,冷酷的 Haskell 没 receiver 参数,也不方便加介词命名…… 🤔
Forwarded from Deleted Account
我刚才发现这个才是真·大佬
Excel 文件的 HTTP response 强行用 ISO 编码写回
ImageUtils 里提供图像 crop,新建 graphics 的图像居然是靠扩展名 jpg / png 来判断色彩是 RGB 还是 RGBA…… 当时看到我差点喷了
还有居然用 Integer 可能传 null 来实现“默认参数”……
代码复用性极低,各种 bytesToHexString 都写了不少方法来实现
Excel 文件的 HTTP response 强行用 ISO 编码写回
ImageUtils 里提供图像 crop,新建 graphics 的图像居然是靠扩展名 jpg / png 来判断色彩是 RGB 还是 RGBA…… 当时看到我差点喷了
还有居然用 Integer 可能传 null 来实现“默认参数”……
代码复用性极低,各种 bytesToHexString 都写了不少方法来实现
Forwarded from 小粉红
Twitter
AKIRA•ᎷᎧᏁᏦᎩ
真相只有一个👉
Forwarded from Deleted Account
抄袭可耻!这货把 when 和 when is 的 smart cast 都抄走了!
什么 switch expression 和 pattern matching instanceof 明明是降智版本的 when 嘛
什么 switch expression 和 pattern matching instanceof 明明是降智版本的 when 嘛