duangsuse::Echo
412 subscribers
3.85K photos
105 videos
574 files
5.15K links
duangsuse技术相干订阅
这是 @duangsuse 与技术有关的发布频道
duangsuse 的另外有 throws 闲杂频道
@dsuset
转载频道 @dsusep
duangsuse 有coding,github,gitlab帐号和bilibili帐号

极小可能会有批评zf的消息 如有不适可以退出

suse的小站:https://piped.stream
ps 另有别名 popf.rip
ʕ•̀ω•́ʔ✧ 🐶🍎🏠生死🐜
(>ω<)岂因祸福避趋之 一鿕
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 基本就是单独的闭包了,调度分次不会互相冲突。(或者根本是独立的程序流?)