duangsuse::Echo
相信我,这玩意拿来做预览也不错…… 不过还是要尝试下兼容 GTK 什么的,动态类型脏就脏了,反正只要开发者注意好 框架做基本支持 动态类型也没关系,何况还有 codegen 可以用呢。
codegen 已经完成了,还算顺利(并不)
为此我花了昨天下午到今天下午的所有时间,而且昨天熬夜到12点(第三天了)
使用的原理很简单,就是 value-variable substitution , 我利用 Python 的动态特性创建了 call, callNew, invoke 等方法,实现这些函数的语义并且在请求代码生成,就实现了复用
但就在刚刚遇到了一个怪事使我以为 Python 有 bug (看起来一个方法调用没成功执行,事后发现是头部的 if not: return 时序没注意到以及用print调试时看走眼了)
不过这件事也使我找到了 id_map/id_set (object id mapping) 的正确写法不是先 try: except TypeError: return _id.get(key) 而是把 key 直接映射到 id ,所以磨叽了一个半小时后,完成。
下一步可能是收尾这个特性(还要考虑拿它来自动为GTK/Wx忽略第一个 parent 参数,虽然我也不想这么干emmm) 然后发布
为此我花了昨天下午到今天下午的所有时间,而且昨天熬夜到12点(第三天了)
使用的原理很简单,就是 value-variable substitution , 我利用 Python 的动态特性创建了 call, callNew, invoke 等方法,实现这些函数的语义并且在请求代码生成,就实现了复用
但就在刚刚遇到了一个怪事使我以为 Python 有 bug (看起来一个方法调用没成功执行,事后发现是头部的 if not: return 时序没注意到以及用print调试时看走眼了)
不过这件事也使我找到了 id_map/id_set (object id mapping) 的正确写法不是先 try: except TypeError: return _id.get(key) 而是把 key 直接映射到 id ,所以磨叽了一个半小时后,完成。
下一步可能是收尾这个特性(还要考虑拿它来自动为GTK/Wx忽略第一个 parent 参数,虽然我也不想这么干emmm) 然后发布
这么一看我就是太弱智了才在codegen支持上花这么多时间,明明是一个毫无难度的东西,竟然浪费了我那么多看片的时间,罪过罪过…… 欲哭无泪
这个算法的名字就是 value-name substitution ,我一开始就明白,却想了半天才得出结论
对了,生成的代码貌似是按后序遍历排序的,尽管这个是基于副作用build str
这个算法的名字就是 value-name substitution ,我一开始就明白,却想了半天才得出结论
对了,生成的代码貌似是按后序遍历排序的,尽管这个是基于副作用build str
#Python 真是无法保证这样复杂的时序写对…… 在有了Kotlin以后我不会在区间开闭上出错 但时序变量更新还真不能保证。(据说bug还是因为我顺手简化"无用赋值"导致的) 我不想写下去了,花了好大精力还熬了三天夜……刚刚有点好转
总感觉可以优化,总感觉看着让人觉得要删掉,可按顺序看看倒也没什么,可是关键在于把它删掉看着也没什么…… 直觉要好啊
注:是指
注:是指
expr = get() ; if (expr == null) { expr = get1(); if (expr != null) bla() } 这种看起来怎么这么相似的我准备发布了,发布后就会死掉。 不过对我来说这个无所谓(
加了一些东西(command 参数的 self 的编号, dict.findKey) 又因为实现不了而删了,心里不开心,现在放假了。
加了一些东西(command 参数的 self 的编号, dict.findKey) 又因为实现不了而删了,心里不开心,现在放假了。
看来只能用很脏的全局变量了…… 反正组件树是后序遍历的,那它依赖 但要调用创建它 所以必须提前的东西 就只能用全局变量了…… 不知道会不会有数据竞争之类的问题(但如果有说明应用的代码太飘了……)
有了这个以后,不知道 Codegen 的 autoExpr 该不该留,我想如果出于一些非常迷的目的(比如说 简写法),删代码真和割肉一样斟酌。。。
有了这个以后,不知道 Codegen 的 autoExpr 该不该留,我想如果出于一些非常迷的目的(比如说 简写法),删代码真和割肉一样斟酌。。。