duangsuse::Echo
毕竟人还是要有上进心的,虽然只是做后端或 Android 而已
但这其实也很鸡肋,因为你可能用不到这些反而影响正常工作,我就是一个例子 23333 😅
所以我在做完 GeekApk 和 Lite 之前不打算想他们
所以我在做完 GeekApk 和 Lite 之前不打算想他们
#PL #lua #android #tech #emmm
刚才在一 Androlua 开发群里 duangsuse 犯下了一个很荒谬的错误,特别在这里说一下
一个人表示他类似这样的代码出空指针
如你们所见,我以为
但是,其实
而且
事实证明我错了,后来一成员表示
我果断喷 Lua 清奇的设计,REPL 里一行一作用域这种反人类直觉的做法。
但回头想想,Lua 是专门这么设计的吗?反正脸已经打了(我可能是日常(被)打脸最多的),不能最后就是被打了个脸啥都没学到吧 🌑...
于是我照常翻了翻 codedump 君的 `《Lua 设计与实现》`,这本我买来一直没看懂的书(也就看了一个下午)
自古本本出真理,然后可能需要脑子的我就得出了这样的结论: 📖
我们输入每一个换行符,都希望 REPL 能立刻给出当前记录下来代码的求值结果
但 Lua 偏偏是一门设计很奇妙的语言,它将代码解析编译成 Proto 然后载入虚拟机里执行,不像 Lite 只是一 AST 解释器所以可以实现我期待的那种情况
根据本本上的说法,这个 locavars 呐,居然和 Proto 是挂钩的,这样,如果想立刻求值一个代码块,就是要立刻生成一个 Proto(包含里面的 local variables) 然后装进 REPL 用的虚拟机在全局的 LuaState 上下文执行,必须
那 Ruby 酱呢? 因为 Ruby 里这个问题很复杂我就不想写了.... 🙈
刚才在一 Androlua 开发群里 duangsuse 犯下了一个很荒谬的错误,特别在这里说一下
一个人表示他类似这样的代码出空指针
local van = "Van darkholme"
if true then
fight_with(van) # I think van is always nil here
end
如你们所见,我以为
if 语句的块一个作用域,和之前的 main chunk 不是一个作用域,而 Lua 肯定是非嵌套作用域所以 van 在 if true then ... end 里肯定就是 nil但是,其实
local billy = 'Billy'; if true then print(billy) end 证明这一切不是我幻想的那样(我写 Lite 的时候 if 带的块都不进新作用域啊)而且
local kirby = 233; do do print(kirby) end end 更是打脸了,其实 Lua 和 Java C# 一样是嵌套作用域 🙈事实证明我错了,后来一成员表示
Lua REPL 里一行一个作用域 🌚❓❓❓ 黑人问号我果断喷 Lua 清奇的设计,REPL 里一行一作用域这种反人类直觉的做法。
但回头想想,Lua 是专门这么设计的吗?反正脸已经打了(我可能是日常(被)打脸最多的),不能最后就是被打了个脸啥都没学到吧 🌑...
于是我照常翻了翻 codedump 君的 `《Lua 设计与实现》`,这本我买来一直没看懂的书(也就看了一个下午)
自古本本出真理,然后可能需要脑子的我就得出了这样的结论: 📖
我们输入每一个换行符,都希望 REPL 能立刻给出当前记录下来代码的求值结果
但 Lua 偏偏是一门设计很奇妙的语言,它将代码解析编译成 Proto 然后载入虚拟机里执行,不像 Lite 只是一 AST 解释器所以可以实现我期待的那种情况
根据本本上的说法,这个 locavars 呐,居然和 Proto 是挂钩的,这样,如果想立刻求值一个代码块,就是要立刻生成一个 Proto(包含里面的 local variables) 然后装进 REPL 用的虚拟机在全局的 LuaState 上下文执行,必须
只能 是「一行一个作用域」了,因为 Lua 里 local 就是意味着给当前块赋值一个本地变量,糟心那 Ruby 酱呢? 因为 Ruby 里这个问题很复杂我就不想写了.... 🙈
duangsuse::Echo
#PL #lua #android #tech #emmm 刚才在一 Androlua 开发群里 duangsuse 犯下了一个很荒谬的错误,特别在这里说一下 一个人表示他类似这样的代码出空指针 local van = "Van darkholme" if true then fight_with(van) # I think van is always nil here end 如你们所见,我以为 if 语句的块一个作用域,和之前的 main chunk 不是一个作用域,而 Lua 肯定是非嵌套作用域所以…
类似的问题在 Ruby 里是这样的,注意我没用闭包
在 Ruby 里和我幻想的一样,找不到。Ruby 不使用嵌套作用域, module 里是「新世界」
不过 Ruby 里各种变量的作用域问题实际上很复杂,因为比 Lua Ruby 还有 self 概念, svar/cref special 啊变量类型也比 Lua 多两个(实例变量和类变量)
# toplevel
kirby = 'Kirby'
module Foo
# Module Foo
puts kirby
end
NameError: undefined local variable or method `kirby' for Foo:Module
from (pry):5:in `<module:Foo>'
在 Ruby 里和我幻想的一样,找不到。Ruby 不使用嵌套作用域, module 里是「新世界」
不过 Ruby 里各种变量的作用域问题实际上很复杂,因为比 Lua Ruby 还有 self 概念, svar/cref special 啊变量类型也比 Lua 多两个(实例变量和类变量)
#life #tech 看了一会冰封的博客,做了半天 SCUT CODE 的 p2 还卡着,然后我不免想了想以后技术上怎么办
后来还是觉得是要慢慢来的,追求得太多但实际没花多长时间在建设悬空楼阁,无视主要技能本身就有选择和现在的无基础
这么久真的是没有,没有系统学习过,现在才发现其实我连打字都不会
只是每天羡慕 OIer 们,羡慕 Haskell coder,羡慕 LFS,羡慕会用 Emacs 的,会写汇编的,会那么多算法的,会 Android 的,会开发 Makefile 纯 C 项目的,会 JNI 的,会...
但是甚至连 C 都没有系统学习过,任何东西都是看代码学来的,现实的无力。
要想真的有资本继续走下去,必须慢慢来,从最基本的打字开始,以后才可能有好的能力
后来还是觉得是要慢慢来的,追求得太多但实际没花多长时间在建设悬空楼阁,无视主要技能本身就有选择和现在的无基础
这么久真的是没有,没有系统学习过,现在才发现其实我连打字都不会
只是每天羡慕 OIer 们,羡慕 Haskell coder,羡慕 LFS,羡慕会用 Emacs 的,会写汇编的,会那么多算法的,会 Android 的,会开发 Makefile 纯 C 项目的,会 JNI 的,会...
但是甚至连 C 都没有系统学习过,任何东西都是看代码学来的,现实的无力。
要想真的有资本继续走下去,必须慢慢来,从最基本的打字开始,以后才可能有好的能力
Forwarded from 每日消费电子观察 (喵)
Forwarded from 永久封存 | Yuuta 台 | 😷 #Pray4Wuhan (Yuuta)
#iOSAndroid 又一处 iOS 设计。。 这种其实对开发者和用户都不好,开发者的话 App Crash 了不清楚,用户的话这样(iOS 那样)和 System.exit 效果都一样,分不清到底是退出了还是 Crash。