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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
#statics 草 想起 echarts.js 的 stack
Forwarded from RWTG9Y4's STDOUT
#china #web #flash 😂这个的确是,可以用 <figure>+<map>+<area> 替换掉动态布局、渲染的 mainUI
Forwarded from 木头频道 / Preview
新华社那个万年不改而且打死也不设置域名解析的官网首页( 203.192.6.89/xhs ),Flash 菜单直接被换成图片了。
看来新华社确实是人人都是高手,比大连车务组强多了(逃)
duangsuse::Echo
#Python #zhihu https://zhuanlan.zhihu.com/p/27141891 这个有意思, pygame 歌词打轴制作
想想我现在也写了一个,还没有十行(迫真

但是他这个真的…… if ev==mouseDown { n++; if n%m==1,2,3 } 重复了三遍,除了一 img 变量外相同的逻辑,动苏不喜欢这样的代码,既多敲了键盘,又封死了动态 list 化、最大化利用代码实现程序功能的可能。
Forwarded from dnaugsuz
这个东西其实也没有那么艰难困坚的,上/下界指的是 Object..Void (kotlin Any?..Nothing, 即类型的 顶..底)

说白了就是这个区间里的子类型约束, (T1 super T) 是限上, (T1 extends T) 是限下, Kt 里前者是 <in T> 后者是 <out T> , * projection 在 in/out 分别代表 in-Nothing/out-Any?,比 Java 的 <?> 无检查安全得多。

这个问题有点复杂,我一篇文章居然最后没讲完全,但是肯定够用了
Forwarded from みつき そはら | 椒鹽九肚魚🐟 | 努力學習中!
完全看不懂 😭
Forwarded from dnaugsuz
加油(ง •̀_•́)ง,总有一天你会明白
Forwarded from dnaugsuz
也是怪我写得太随性,要是我紧扣议题,讲明白 Kotlin 里 Array<T> 和 Array<out T> 是不同类型的这类事实去做对比,就会更容易理解了。
Forwarded from dnaugsuz
可以这么理解,反过来就是逆变
Function<in T, out R> 里 T (实际)收 super T 的, R 收 extends R 的
比如 (o as Func<Number, CharSequence> as Func<Int, String>) ,其中 (o as A as B) 也就是说若有 op(B) 则 op(A) 正确、合规
Forwarded from みつき そはら | 椒鹽九肚魚🐟 | 努力學習中!
C++ 是你可以把子類別 cast 成父類別,或者傳指計/引用 因為子類的成員總在父類後面(?)
Forwarded from dnaugsuz
C++ 是 template 啦,我不熟悉,但它的类型检查应该更玄幻,不是这么规范了
大意了, Object..void(无值类型) 应该说前者是顶,但它是最小;后者是底,但它是最大
(话说一般 a..b 不是 a<b 的嘛)
所以 <T:/*extends*/A,B> 才指 intersection UBound ,因为它是「上限」?
不对, #English 里 upper-bound 应该是下限的意思🌝
Forwarded from dnaugsuz
是的,但是 Java 暴露 super/extends 的限界约束甚至 intersection superextends(upper bound) ,没有声明处型变(declaration site variance)
^嗯不对,insect type 是 Kt 的术语,Java 的是 multiple bounds
但我目前没到非 extends A&B 的用法

给实际编程造成了巨大麻烦,也没有把这个概念改造得好到哪里去。我还是觉得 Kotlin 干得漂亮,掩藏了这些复杂性😘
Forwarded from dnaugsuz
上逆变 是什么😳
(T as T1) 的转换?如果是类型安全的话就子类型兼容了,为什么要靠强转断言类型安全?

嗯…… 如果你说有类型损失的,需要断言回来(UnsafeVariance),我这有个例子 ,但是代码复用整到这个程度,估计也没谁了🌚(草

items 的是 <out T>, 如果安全的话就把 out 去掉,但那就不能真正做到 Tuple 的复用了。
我能断言指定 items[i] 位置的 func 可以接受 T ,因为它本来就是被取并集损失了精度的,于是写了 (items[i] as Consumer<@UnsafeVariance in T>).accept(v) 的这种代码,其实它本身就是 in, 但为了写存储的兼容被迫暂作 out 了而已。
很多人始终不会遇到这种问题,老实说这已经属于很极端的代码复用设计了😒