/tmp/duangsuse.sock
23 subscribers
303 photos
3 videos
92 files
337 links
从 duangsuse::Echo (@dsuse) 跟进出来的分支,将在作者恢复原帐号访问的时候合并删除。
Download Telegram
Forwarded from Deleted Account
你们很多人可能都不懂我这个“滥用”的意思
我只能尽量总结一句话:别做表面上的简洁,那不能处理真正的复杂
Forwarded from Deleted Account
这个只能你们自己去学习思考了
Forwarded from ️タナバタ カヤ
也可以写的,只不过意义完全不一样
Forwarded from Deleted Account
功能和优雅易读的代码并不冲突
Forwarded from Deleted Account
我刻意在 ? 和 : 加空格就是为了避免混淆……
Forwarded from Deleted Account
你别咦,最简单的方法就是把自己一个中型项目 bottom-up 彻底重写一遍
Forwarded from Deleted Account
如果你嫌麻烦,当然学不到喽
可是在这个过程里如果你不嫌麻烦,那就没有代码复用。
Forwarded from Deleted Account
其实这个问题有人对 JB 提过,还在讨论

https://youtrack.jetbrains.com/issue/KT-5823

不过争议的人不多,你可以去淌下水啊
Forwarded from 巅峰 白
尽量写无副作用函数
同样功能写第二次时 重构第一次成helper(但是人多时不太适用,除非pair prog或有强的review)
Forwarded from Deleted Account
不一定非得是 Helper fun,怎么抽象都可以
Forwarded from Deleted Account
Kotlin 的 type nullability 彻底完成了一次化腐朽为神奇,为此,牺牲 ? : 这种复杂易滥用的文法是值得的。

为 90% 的 case 优化并且重视明确性,这是语言设计应该重视的思想。
Forwarded from Deleted Account
https://youtrack.jetbrains.com/issue/KT-5823#focus=streamItem-27-2403678.0-0

所以我举个实实在在的“滥用”例子

我以为 ternary 一直是在替换 if (p) a = 1 else a = 2 为 a = p? 1 : 2 的,但说实话作为一个条件化表达式,它根本没必要被过度使用。

但现在你们可以看到,这里有一个能够抽提为 String? 的扩展 val 定义的东西了,可以想象写出这样例子的人代码质量会有多糟心。

? : 不值得被 miss,至少不值得为此毁掉 "Kotlin way"。
Forwarded from Deleted Account
#Kotlin
不说这一点,Java 14 倒是向 Kotlin 学习了不少东西

比如说 when 和降级版的 smart cast。

https://t.me/dsuse_tmp/1822
Forwarded from Deleted Account
最后我说一句,不用去了 ☺️

https://youtrack.jetbrains.com/issue/KT-5823#focus=streamItem-27-803740.0-0

因为 Kotlin 的主创 Andrey Breslav 对此态度并不积极

“We'd need to drop ":" to do this, and will be using ":" in two very different meaning in the same language”
Forwarded from 层叠 - The Cascading
有用户在 Ethernum 发起了 tx=0xf3691...7c3e6 的交易来保存《发哨子的人》。
(点击 "Click to see More" -> "View Input As" -> "UTF-8" 查看。)

这倒不是以太坊第一次作为存档媒介了。比 archive.org 稍贵一点就是了...(此次交易代价约 $0.23。)
🤔field 是不存在的,底层实习细节
final 是不存在的,因为它的表义被合并进各种关键字元素本身里了

类/架构器/属性/方法 变成了
物/造与/名词/动词

可变的量在绝句里受到了很大限制,它的类型必须显示写出

物 造于/量 取者 变 置者 常/事

覆写/开放/终定
抽象/实现

储物 例物 况物 标物
内物 扩物

🤔还能怎么简化呢……
parserkt-util
SSTFFI
Sized
Slice: Sized get(Idx) get(IdxRange)
Tuple (Tuple2/3 TupleAlloc TypedTuple tupleOf) (DynamicTuple anyTupleOf getAs indexAs)
Fold (asConstant asString asList asFlattenString asFlattenList)
Feed SliceFeed StreamFeed
Input CharInput
inputOf(text, file) inputOf(vararg items)
inputOf(iterable) inputOf(iterator)
ReaderFeed
inputOf(reader, file)
parserkt
PWOC
Pattern PatternWrapper (SatisfyPatternWrapper wrap)
OptionalPattern ConstantPattern
(item defaultValue constant)

toDefault toConstant

parserkt.pat
SDRIES
Seq Decide
Repeat (InBounds Many)
item elementIn satisfy
CCDPAC
Convert (force typed)
Contextual
Deferred
Piped (ensure)
AlsoDo
Clam
mergeFirst/Second
discardFirst/Second
flatten

parserkt.pat.complex
SJIT
SurroundBy (prefix suffix)
BaseJoinBy JoinBy
InfixPattern
TriePattern
#film 《 亲密敌人 》
生活片 中美