duangsues.is_a? SaltedFish
60 subscribers
609 photos
6 videos
91 files
562 links
🌶🐔🐟 duangsuse 的日常
尤其喜欢发些奇奇怪怪的东西
和转载别人的东西
Download Telegram
Forwarded from dnaugsuz
你必须学习一个,这并不是复杂的 break continue 控制流,仅仅是索引的区间、递进循环而已

形如:
for (i in 0..10) op(i);
for (int i=0; i<=10; i++) op(i);
int i=0; while (i<=10) { op(i); i++ }
其中, op 可为任何引用到变量 i 的表达式/语句块,下文皆此。
op=System.out::println; 则你会看到 0,1,2,...,10 这 11 个数

这是 inexclusive range ,也就是带右值的 exclusive range 。比如 1..100 ,总共 100 个数 (== 100-1 +1)

编程时常用 exclusive 区间:
for (i in 0 until 10) print(i)
0,1,...,9
如果你要 s[i] 遍历整个字符串 s ,
因为索引以 0 起始(方便机器计算 以及避免区间连接时的麻烦),它的末引数其实是 length-1 ,代码便是:
for (i in 0 until s.length) op(i)
for (i in 0..s.lastIndex) op(i)
for (int i=0; i<s.length; i++) op(i);
其中 val String.lastIndex get() = length-1
其实,若 i 步长为 1,继续条件 (i<=n) == (i<n+1) 且等效 (i != n+1) 、 (i-1 != n) 。

(i<=n) 的区间示例是 (1..n) ,
终止条件 == !继续条件 ,即 while break 后 (i>n) 即 (i==n+1)。


想想,如果你要按2字符为单位迭代一个字符串 s ,便要设置不是1的递增步长。
for (i in 0 until s.length step 2) op(s[i])
这样 s="Winnie"; op=print 时 Wni 便被输出

这样就有一个好:细心的小朋友就会发现实质上这给字符列表分了块—— 0,1; 2,3; 4,5 这 2*3 项
int i;/*另种写法*/
for (i=0; i<s.length-1; i++) op(s[i], s[i+1]);

这样实际就实现了某种 zip([1,2],[2,1]) ,但也要提前写上 IndexOutOfBounds(缩 IOB) 的检查,那么作为练习,实现
<T> void forEachChunk(int size, List<T> xs, Consumer<List<T>> op);
以及自定签名的 zip, zipWithNext 函数。

当然,以上示例的 for while 都没有加 {} ,在工程上这是不利于可读性的;而且我举的例子大部分可用 for (T x : xs) op(x); 即 for (x in xs) op(x) 和仅 Kotlin 的 for ((i,x) in xs.withIndex()) op(i,x) 替换,实际上用到的时候不多。

索引计算的常识和 <,<=,== 及 +,+= (a+=b 等价 a=a+b) 这些运算密切相关,必须学习一个。
Forwarded from dnaugsuz
感觉这个内容并不困难,就是看看而已

记得以前好多程序员喜欢 List<T> wtf; 然后 for (T item : items) wtf.add(op(item)); 的,感觉很冗
Forwarded from dnaugsuz
等到你从 语言入门示例 走过来就会发现,工程界讨厌这种写法

就是玩技巧 这么做也排不上号的
每次都这么写,地方太多了
其实就是 List<T> wtf = items.map(::op); 的意思嘛

只是因为入门时整的都是小玩具,才觉得没有关系,写多了就会厌恶这些东西。
Forwarded from dnaugsuz
他写得的确有点含糊,但是这个程序是有意义的;只能说考的其实只2个空。
Forwarded from dnaugsuz
有些人的确是这样😓
以前我也没做过这种科普题,想想第一次写 Android 应用时我也不会
或许慢慢就会了,但我那时初中没毕业... 劝退也挺好
不用想大陆sfz 了,应该是跟现在上台的一样,用通行证或护照
Forwarded from HBO
现在我用飞机上Telegram内地政府知道不
Forwarded from dnaugsuz
要不要把「身份证」的别字改一下,频道挺大的🤔
Forwarded from 坐和放宽
原来打错字了
Forwarded from 坐和放宽
那没事了
Forwarded from dnaugsuz
简体字繁体字“残体字”拼音缩写…… 汉语还要遭受怎样的酷刑
Forwarded from 坐和放宽
。。。。。。
Forwarded from 坐和放宽
你又开始了
Forwarded from 坐和放宽
用个大家都能理解简称都有问题
Forwarded from wadf wds
说的没毛病啊 很形象
Forwarded from 坐和放宽
建议下次用 Identity Document
而不是ID