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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
numpreety.ts
3.6 KB
#TypeScript 没有 in, out* 真是不如 #Kotlin 好啊!还是 Kotlin 设计有创意……
#TypeScript 的 overloads list 有点不直接,而且是半自动的多态…… 定义侧还得手动 typeof
#TypeScript TS 也有『半dependent type』的特性——输出类型可按照实际参数而定。

interface Monkey {
Hou: HappyMonkey;
Jun: SadMonkey;
}

function getMonkey<K extends keyof Monkey>(name: K): Monkey[K] {/**/}
#web #js #TypeScript #tool 过于生草😳
索引 slice (视口计算) 起来还挺麻烦的,开始用脑子都搞错了,亏了我的工程/调试经验…… 勉强试出来了 😥

老实说我对这个内带优化元素的特性本身认知都不明确,不过终于是写出来了

改日,这个项目会被重写打包成支持 ES5 的 Web Extension ,感谢 #TypeScript .
#TypeScript #parser 🤔lex-yacc 式框架... 但是感觉代码质量不过关啊,文档也没写
duangsuse::Echo
#Kotlin #code #coroutine suspend fun main() = coroutineScope { for (i in 0 until 10) launch { delay(1000L - i*10); print("$i ") } } 提问:为什么结果是 9 downTo 0 ?launch 的里面用了 coroutine 特性,但为什么 main 也是 suspend fun? 如果只是单线程,是怎么在最后才输出第一次的 $i 的?
#Kotlin #coroutine 应该说有了可以挂起恢复的协程后, launch 里面的东西就可以理解为「被添加的Task」吧(此例只是闭包住了变量i),由线程(池)上执行的调度器来运行它们,类似于 event loop 这样

第一个 async fun delay 本身也是调度器操作,不是 Thread.sleep 不会休眠线程,是完全不同的概念,当然不会卡死调度器,举个例子:

var t0 = time(); var t1:Long
for (task in cyclic(tasks)) {
t1 = time()
if (task.delay>=0) task.delay -= (t1-t0)
else { task.run() }
t0 = t1
}


这个 launch 本身就是独立于 for (i in iprog) 顺序的,不是说得 i=9 的 launch 完了才能发 i=8 的,而 suspend fun() {} 的独立性可以理解为 #TypeScript 式的 async state machine 基本就是单独的闭包了,调度分次不会互相冲突。(或者根本是独立的程序流?)