Forwarded from niconiconi
话说 dalao 们为什么执着于 isEmpty 了 可是我个人觉得 str != "" 更直观啊 而且也很直觉
Forwarded from Deleted Account
因为那样更规范、更好引用啊
你可以
"" 是一个字符串常量(同时也是字面量)
一般而言好的程序员都会尽可能避免类似的“魔法常量”出现,能明确就明确,这样会对你以后的重构、维护,以及别人的阅读有很大的好处。
再举一个例子,就是
比较那一点点的“少击键”的蝇头小利,和以后维护 简单干净 的实锤优势,我想好的程序员不会随便为了节省键盘寿命而按照 Java 那一套写代码的。
你可以
str.takeIf(String::isNotEmpty),再试试 str.takeIf { it != "" } 看看。"" 是一个字符串常量(同时也是字面量)
一般而言好的程序员都会尽可能避免类似的“魔法常量”出现,能明确就明确,这样会对你以后的重构、维护,以及别人的阅读有很大的好处。
再举一个例子,就是
(s == "") 不如 str.isNotEmpty() 更能让一个重视代码质量的人,想起对『这一块』代码的函数抽提和简化方法,主要是明确性不如后者的原因。和 (size -1) 与 lastIndex 是一个道理,但不完全一样。比较那一点点的“少击键”的蝇头小利,和以后维护 简单干净 的实锤优势,我想好的程序员不会随便为了节省键盘寿命而按照 Java 那一套写代码的。
Forwarded from Deleted Account
退一万步讲,Java 里 == 是引用相等性(对于 Kotlin 就是三等号 === 了),所以为了语义明确, (s == "") 必须被写成 s.equals("") 或者 s.length() == 0
开心一点你甚至可以写成 "".equals(s)
两种形式。如果你的项目里同时出现了这两种形式(实现的是一个目标),会给以后的维护造成麻烦,不如都统一了好。
开心一点你甚至可以写成 "".equals(s)
两种形式。如果你的项目里同时出现了这两种形式(实现的是一个目标),会给以后的维护造成麻烦,不如都统一了好。
Forwarded from Deleted Account
https://github.com/silmeth/jsonParser/blob/master/src/main/kotlin/com/github/silmeth/json/SimpleJsonGrammar.kt#L50
这个可以,足够暴力
作者真的是连一点性能考虑都不顾了么……
作者是一个前端么……
这个可以,足够暴力
作者真的是连一点性能考虑都不顾了么……
作者是一个前端么……
项目的主页,就用 Literate Kotlin 来写好了
https://duangsuse-valid-projects.github.io/Java-You-Dont-Know/ 这种格式
那个图的下面
build·version·examples·comparasion
文章直接给 Gradle 的依赖配置
然后开始整体文档
https://duangsuse-valid-projects.github.io/Java-You-Dont-Know/ 这种格式
那个图的下面
build·version·examples·comparasion
文章直接给 Gradle 的依赖配置
然后开始整体文档
You Dont Know Java
Java You-Dont-Know你不知道的 Java
🐮☕️ 你没见过的 Java 语法(至 Java 8)
/tmp/duangsuse.sock
项目的主页,就用 Literate Kotlin 来写好了 https://duangsuse-valid-projects.github.io/Java-You-Dont-Know/ 这种格式 那个图的下面 build·version·examples·comparasion 文章直接给 Gradle 的依赖配置 然后开始整体文档
项目总体分成 base, parserkt, ext 三个部分
其中复用性高的部分做成 base
ext 则包含 NumUnit 和 LayoutPattern
其中复用性高的部分做成 base
ext 则包含 NumUnit 和 LayoutPattern
https://github.com/ParserKt/ParserKt
啊,JitPack 总算配置好了
唯一不好的就是我有 parserkt-util, parserkt-ext 两个 subproject,它只能构建完最大的那个 project……
啊,JitPack 总算配置好了
唯一不好的就是我有 parserkt-util, parserkt-ext 两个 subproject,它只能构建完最大的那个 project……
GitHub
ParserKt/ParserKt
Naive one-pass recursive descent, scannerless parser framework for Kotlin - ParserKt/ParserKt
/tmp/duangsuse.sock
https://github.com/ParserKt/ParserKt 啊,JitPack 总算配置好了 唯一不好的就是我有 parserkt-util, parserkt-ext 两个 subproject,它只能构建完最大的那个 project……
如果要沿用项目结构,必然得 把 ext 放在 ParserKt/ParserKt 之外的 repo 里…… 真是无可言表
或者,可以利用 gradle 加点私货,可我不知道怎么加
或者,可以利用 gradle 加点私货,可我不知道怎么加
https://github.com/LanguageAsGarbage/muridesu-lang/blob/master/muridesu/helper.py#L141
Python 的 lambda lifting
我不知道函数式里啥是 lifting,但这里 lifting 是把 lambda expr 给变成 def 局部函数。
Python 的 lambda lifting
我不知道函数式里啥是 lifting,但这里 lifting 是把 lambda expr 给变成 def 局部函数。
def visit_Lift(self, node: Lift):
self.generic_visit(node)
lam = node.lam
n = "lambda.{}".format(self.cnt)
self.cnt += 1
defun = ast.FunctionDef(n, lam.args, lam.body, [], None)
ast.copy_location(defun, node)
self.lifted.append(defun)
name = ast.Name(n)
ast.copy_location(name, node)
return nameGitHub
LanguageAsGarbage/muridesu-lang
听说有人用Python壳子的语言骗经费? 过来挨打? Contribute to LanguageAsGarbage/muridesu-lang development by creating an account on GitHub.