免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: asuka2001
打印 上一主题 下一主题

命名难,难于上青天 [复制链接]

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
241 [报告]
发表于 2012-02-18 11:58 |只看该作者
回复 240# starwing83

  1. local x = 10      x = 10
  2. _ENV.x  = 20      global x = 20
  3. x = 30            x = 30
  4. _ENV.x  = 40      global x = 40
复制代码
你这是确实是在给explicit-local找正面例子么…… 我怎么看都是右边代码少……
后面的没看懂……

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
242 [报告]
发表于 2012-02-18 12:05 |只看该作者
starwing83 发表于 2012-02-18 11:51
但是你知道_ENV.x是个语法糖,实际上如果不交叠使用,就会变成这样:

x = 10
x = 20


global x = 10
x = 20

和第一个几乎一样。这才是正儿八经的global-default(完全的和local-default等价,而python至少目前不是的),但是,除此以外,global-default在使用upvalue的时候**必须**采用nonlocal!


貌似看懂了……  反应好慢啊现在……

前面两行是lua代码,将自由变量x依次设置为10与20.
后面是伪python代码? 也是想完成相同的目的?

>> 但是,除此以外,global-default在使用upvalue的时候**必须**采用nonlocal!
是不是也可以说: 但是,除了想表达自由变量以外,lua都**必须**采用local呢?

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
243 [报告]
发表于 2012-02-18 18:09 |只看该作者
本帖最后由 starwing83 于 2012-02-18 18:11 编辑

回复 243# OwnWaterloo


    所以是个个人口味问题啊,你是喜欢少敲代码(local-default)还是想自然(global-default)。你应该知道我学的第一门和第二门脚本语言是ruby和python,我理应对先学了至少两年的local-default有好感的……事实上连vimL都是local-default的,但是为啥我学lua的时间只有前面三者的三分之一却完全倒向了global-default呢?因为我觉得后者的确是自然一些。

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
244 [报告]
发表于 2012-02-18 21:13 |只看该作者
回复 244# starwing83

是只用了1/3时间就倾向了,还是写了3倍与其他3种语言的代码后才倾向的

也许我lua写少了…… 又或者是capture by reference用少了……

但lua敢把local改短一点嘛…… 比如let神马的……  满篇的local看着很……

还见过有人写的emacs插件,专门检查是不是每个变量都local了的……
写这插件的人是bug……
语言设计到会产生这种用户说不好也是bug……

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
245 [报告]
发表于 2012-02-18 21:24 |只看该作者
本帖最后由 starwing83 于 2012-02-18 21:25 编辑

回复 245# OwnWaterloo


    不过lua代码也写的并不多嘛。我当年可是写了很多python代码的。

而且local的确很好看啊,对于某IF THEN END IF FOR NEXT敲多了的人来说local并不长啊。

最后,要短的话,perl有my,不过看上去很那啥。let似乎表意不明确吧?还有比local这种更显然的关键字么?

python早期根本就没留意闭包的威力哈。

metalua写判断是否每个变量都local灰常灰常简单……
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP