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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): a19a0b
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 基本就是单独的闭包了,调度分次不会互相冲突。(或者根本是独立的程序流?)
https://lab.xecades.xyz/Fourier/?img=5
感觉自己的智商严重需要重构了…… 看了下基本绘制结构我明白了,当时找 img= 参数引用的时候想当然查 (n + 1) 这个表达式,三次没找到后才在已发现 loadPageVar() 后明白编号到零基数组引数是 -1,明显没过脑子(或者记性不好/数性太差),就凭这?心理各种崩溃。

是用 setInterval (timer) 累积dt 更新的(缺点 dt 是常量)
generate(t) 基于 getSvgInfo() (load onto <svg> tag)和 getDotInfo() (use style "offset-distance"&canvas.origin)
整体代码质量较好,非常简短而整洁,建立了 Axiscomplex 的 class,helper(common abst.)/canvas/main logic 三文件符合拆分直觉,命名和算法封装方式偏 C 化(静态指定子程序输出的目标存储空间,对应其参数也是写死的;即便程序生命周期仅调用一次)

待会重构下(也只能是拿 #TypeScript 了),算是安抚可怜的我…… 😭