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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
Forwarded from 小邱
它的提示被引用没有了
Forwarded from dnaugsuz
显然还有其他代码引用了 ThatViewHolder.listItemView,而那些代码要求 public
Forwarded from dnaugsuz
丑 Java 多作怪,要是 Kotlin 就既可以保证抽象性,又能做到简洁
Forwarded from 平行线
🤔那你应该是在这个Java文件之外使用了这个字段,否则private化并不会产生报错
Forwarded from 小邱
没有报错 之前ide的加粗提示没有了
Forwarded from dnaugsuz
所以你之前所说的是…… 不是错误 🌚
Forwarded from dnaugsuz
只是“加粗没有了”
Forwarded from dnaugsuz
草,对 IDEA 那不是自然而然的嘛
方便你区分
Forwarded from dnaugsuz
那当然,因为你的 class 里面没引用者,它是 private field,又不是 protected 那 class SomeClass extends YourClass 还能访问到
我还以为是就 public/private/protected 它会区分粗体斜体什么的呢……忘记了,有段时间没用 IDEA
下去散步的时候想了一下 ParserKt 的 LayoutPattern 处理可选的 layout 的问题,感觉有点复杂

所谓可选的 layout,就是:

if p: op() #无
if p: #有
op1()
op2()

和带不带花括号的区分方式处理上差别不太大,都是判 1 字符。

ParserKt 里限制非常大,因为是严格的 peek(1),没法预判
不过对于 if,可以定义这种 Pattern<Char, AST>

LayoutPattern 是基于 item / tail / layout 定义的,有没有 layout 也是取决于 tail 是否解析成功
但由于 ParserKt 全局严重依赖 Type nullability (也就是 Optional<T>)所以不可能在 tail 里做到区分 layout/非layout 的语法

我想到了一个方法,就是把 \n 字符从 layout 的 prefix item('\n') 里拉回 tail 里,跳过 whitespace 和 ':' 后看是否换行,然后再基于整个 LayoutPattern 的结果,Piped
+ 如果结果是 Expr,则代表非 layout 语法,继续 read 一个 expression 并且组织 IfExpr
+ 如果结果是 IfBlock,则代表 layout 语法,直接返回结果
Forwarded from dnaugsuz
Arrow 实在是太可怜了,开始我看几个 parser combinator 库依赖它,还以为它是个 big guy 呢 🤪
Forwarded from dnaugsuz
ςετυθιοπασδφγηξκλζχψωννμ
ΣΕΡΤΥΘΙΟΠΑΣΔΦΓΗΞΚΛΖΧΨΩΒΝΜ
你们更喜欢哪个希腊字母(
Forwarded from dnaugsuz
Λrrow is a functional companion to Κotlin standard library
Forwarded from dnaugsuz
greekToSimilar = {
"οθσ": 'o',
"υμ": 'u',
"ι": 'l',
"γ": 'y',
"η": 'n',
"κ": 'k',
"χ": 'x',
"ω": 'w',
"ν": 'v'
}
🤔看来需要特殊处理

def singleCharDict(pairs: str):
assert len(pairs) % 2 == 0, "unpaired"
ks, vs = map(lambda i0: [pairs[i] for i in range(i0, len(pairs), 2)], [0, 1])
return dict(zip(ks, vs))

greekSimilar = singleCharDict("lιyγnηkκxχwω")
greekSimilar.update({'o': "οθσ", 'u': "υμ"})


然后再来个火星文生成器……

from random import choice

def huoxin(text): ''.join([ choice(greekSimilar[c]) for c in text if c in greekSimilar ])

好像不行,再来一个……

def let(op, x): return op(x) if x != None else None
def huoxin(text):
chars = [ let(choice, greekSimilar.get(c)) or c for c in text ]
return "".join(chars)


huoxin("Kotlin") #'Kοtιiη'
Forwarded from dnaugsuz
huoxin("Arrow is a functional companion to Κotlin standard library")
#Arrσω is a fμηctiσηaι cοmpaηiθη tσ Κοtιiη staηdard ιibrarγ
def singleCharDict(pairs: str):
assert len(pairs) % 2 == 0, "unpaired"
ks, vs = map(lambda i0: [pairs[i] for i in range(i0, len(pairs), 2)], [0, 1])
return dict(zip(ks, vs))

greekSimilar = singleCharDict("lιyγnηkκxχwω"+"PΡTΤYΥIΙHΗTΓZΖXΧBΒNΝMΜ")
greekSimilar.update({'o': "οθσ", 'u': "υμ", 'E': "ΕΣΞ", 'O': "ΘΟΩ", 'A': "ΑΔΛ"})


from random import choice
def let(op, x): return op(x) if x != None else None

def huoxin(text):
chars = [ let(choice, greekSimilar.get(c)) or c for c in text ]
return "".join(chars)
def mapInputBy(transform, prompt = "> "):
while True:
try: print(transform(input(prompt)))
except KeyboardInterrupt or EOFError: break

def mapLongInputBy(transform, prompt = "» "):
buffer = ""
while True:
try: buffer += input(prompt)+'\n'
except KeyboardInterrupt: break
except EOFError:
print(transform(buffer))
buffer = ""
def reversedMap(map, keys = lambda it: list(iter(it))):
reverseMap = {}
for (k, v) in map.items():
for key in keys(v):
reverseMap[key] = k
return reverseMap

def intoTranslateMap(map): return {ord(k): v for (k, v) in map.items()}

_huoxinBackDict = intoTranslateMap(reversedMap(greekSimilar))
def huoxinBack(text): return text.translate(_huoxinBackDict)
_huoxinDict = intoTranslateMap({choice(k):v for (k, v) in greekSimilar.items()})
def huoxin1(text): return text.translate(_huoxinDict)