duangsuse::Echo
717 subscribers
4.26K photos
130 videos
583 files
6.48K links
import this:
美而不丑、明而不暗、短而不凡、长而不乱,扁平不宽,读而后码,行之天下,勿托地上天国。
异常勿吞,难过勿过,叹一真理。效率是很重要,盲目最是低效。
简明是可靠的先验,不是可靠的祭品。
知其变,守其恒,为天下式;穷其变,知不穷,得地上势。知变守恒却穷变知新,我认真理,我不认真。

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
我现在才明白王垠的看法是片面的,像是这种情况,你标 return 是不对,这不是表达式的风格
我实在不敢再去想…… Linus 不是有一句话说,编程的两种方式一是认真思考,二是在无数个机器上测试,那我就多写点测试吧,真 TMD 太困难了!
最后一个 ++ 很是难理解,我都不知道自己是怎么写出来的…… 又搞不懂了,emm
Trace 还是不好写,不写了 #Algorithm #Kotlin
本来数学不好,还要写这个自己都不知道是为什么要那么写的东西
何况刚才我写的链表也缺了点东西,比如 insert 操作…… 它应该可以加在 iterator 上面
但是单就这个数据结构的实现上来看,我觉得还有很多应该思考建模方式的东西
既然本频道之前的东西都没上 LICENSE,这次的代码也不上了,妮妮萌萌系爱抄抄吧,只要你们会就行了。

一些代码留着下次可以继续测试和复用,比如 Feeder
StreamFeeder 有点累了,没写出来(即便是写出来也不需要太大力气,而且可以继续写方便复用的解析器框架

它不依赖我写的 Linked.List,话说 Linked.List 把 ProGuard 的 partial evulation 都给弄炸了,还说找不到 calc.Linked.Cons 和 calc.Slice 的公共超类?莫名其妙,即便 Cons 是属于 sealed class 的 data class。
Forwarded from Deleted Account
黑客是为了挑战最有难度的技术,就像Unix那样,像Linux那样,他们主要是为了提供更好更牛的东西,他们不破解软件,他们用自己的能力重写一套更牛逼的软件。他们还像telegram一样,支持1.5GB的文件 ,支持20万人的群,无限人数的channel,以及足够开放的平台……这才是真正的hacker精神
#Python 有这种工程师,我也是服了,也是 NB。 #Low #China
#Kotlin 是好事,你看那 Deprecated 本来就应该换了(而且 Kotlin 的 annotation class kotlin.Depreacted 还带了 IDE 自动替换(比如,val T.isUserAMonkey get() = … 能够换成 .isMonkeyUser 自动的;

至于 Null safety (Nullability) 更是 Kotlin 比 #Java 化腐朽为神奇的地方(当然,in/out 型变性声明而不是 ?super/?extends 类型上下限界也是一个优秀之处),这实在可以说是 Kotlin 最骄傲的地方之一。

它既然觉得 str: String?, 你 str!! 一下就可以拿到 kotlin.String! 了(也可以用 ?. 安全 Null 传导),不过如果真的是 null 引用的话,就会抛出 KotlinNullPointerException


val files: Array<File>? = …
files.forEach { f -> f.close() } // Unsafe use of a nullable receiver of type Array<File!>?
(fn as (String) -> *)(json["user_nickname"]) // Type mismatch: inferred type is String? but String was expected
Forwarded from 羽毛的小白板
duangsuse::Echo
#Kotlin 是好事,你看那 Deprecated 本来就应该换了(而且 Kotlin 的 annotation class kotlin.Depreacted 还带了 IDE 自动替换(比如,val T.isUserAMonkey get() = … 能够换成 .isMonkeyUser 自动的; 至于 Null safety (Nullability) 更是 Kotlin 比 #Java 化腐朽为神奇的地方(当然,in/out 型变性声明而不是 ?super/?extends 类型上下限界也是一个优秀之处),这实在可以说是…
你会爱上 Kotlin 的,尤其是:如果你写算法的话
Java 简直能把 C++ 写5行的代码写10行,而且还不如 Kotlin 可移植
我几乎不写 Java,更看不上 Groovy 那种辣鸡语言,JRuby 和 JPython 试过,不太喜欢。不过 Scala 我是不常用,Eta(Haskell for the JVM) 的 IDEA 支持不好

Groovy 怎么辣鸡呢?IDEA 2019 打开你的 Groovy (我只用 Gradle)脚本看看,你会发现一堆 type error
这 TMD 绝对不是 JetBrains 人懒的锅。

import static System.out
def doge = "🐕"
out.println("Emmm ${doge}.") // can't be applied to GString


谁叫你弄个什么鬼 GString 的???难道你要惰性求值???
还有(好像是 Gradle Action<in T> 专属的),谁告诉你 it 可以被隐式作为 this 的?
['1','2','3'].map { println(replace('1','')) }
为什么 def 也可以用来不带参数元组的定义?你们的作用域是怎么做的?为什么给人感觉那么奇怪?脚本语言就可以如此随便?

脚本语言随便起来是可以很随便的,比如那个 0+'1' != '1'+0'0'==0 的 JavaScript。
有些完全是『工程派』的人是不了解这些事情的,他们只是觉得写得越少/多越好,嗯…… 所以才有了类似 Ant XML、SOAP("Simple" Object Accessing Protocol) 这种东西。

他们写的时候就只会以一种思路、一种视角看一个示例程序甚至完全不看,就是想当然地设计,设计出类似 Java 的 type wildcard 的东西(当然这个还是比较保守的),因为不管你在某些方面再好,也总有自己还没学过的方面。

有些人只看着所谓的测试文档覆盖率,所谓的持续集成,所谓的工程标准。
可是他们注意力的重点,几时才会放到自己要实现的东西本身上来呢?

再看看某些所谓的中文编程语言,他们到底在做个什么呢?老祖宗的好东西全给糟蹋了,中文了你还用逗号切参数列表,中文了你还把“”拿来和""一起都记字符串,中文你还管 boolean 叫布耳,中文你还把 break; continue 翻译成『打断』『继续』,翻译个驴唇不对马嘴,不够用心。

对所有编程语言里语言是中文的,若它属辣鸡设计,
锤爆(它)
Forwarded from dnaugsuz
…… 你没有提到 return 有个副作用是下面的代码都别想执行了,那当然是没这个问题了

其次有一个不容易被注意到的细节:?: return?: throw 居然是一样的,都 TM 是普通版文法
Kotlin 傻逼了! return 怎么可以是表达式?
你试试 fun op() { println(null ?: return as Nothing) }
Forwarded from dnaugsuz
iseki 觉得 return 能够和 throw 一样被作为表达式吗 🤔
fun op() { do { println(null ?: continue as Nothing) } while(true) }
我觉得好奇怪啊
Forwarded from iseki
返回Nothing不行吗
Forwarded from dnaugsuz
我觉得不行,这样容易混淆……
我觉得可以提供语法糖,但不能是表达式

我很讨厌 fun op() { do { println(listOf(return, continue, break, throw Exception())) } while(false) } 可以解析甚至执行的情况
Forwarded from dnaugsuz
我还是无法接受 continue 可以被作为参数的 case……
println(continue) 我简直发毛
尽管类型层面我们可以检查出 println 不能被执行
Forwarded from iseki
不能编译啊,你怎么可以println(Nothing)呢
Forwarded from dnaugsuz
我是这样想的,如果没有足够的理由,『控制流』表达式我要有所取舍
比如说,一些能够不作为表达式的,return 什么的就专门提供语法糖