从Lua想起来的。 我们的嵌入式系统需要选一个Script Engine。在通讯行业,TCL是最广为人知的,
可惜在WinCE上实在是扶不起来,慢的要命,有时候还Crash,更糟糕的是,我没有找到SourceCode..
据说是有的,但是需要n多步骤才有可能编译成功。我实在不敢把命运寄托在一份没有充分测试过的
二进制发行版上。其实很早就像领导推荐Lua了,因为我在CE上编译成功了他的代码,并且测试过
如扩展C函数等功能,速度也不错。不过领导不愿意让我们的用户学习一种新的语言。所以我今天
打算自己学习一下,看看难不难。看了一下,立刻感到胸口发闷,怒发冲冠:
1.
逻辑运算
and, or, not
其中,and 和 or 与C语言区别特别大。
在这里,请先记住,在Lua中,只有false和nil才计算为false,其它任何数据都计算为true,0也是true!
and 和 or的运算结果不是true和false,而是和它的两个操作数相关。
a and b:如果a为false,则返回a;否则返回b
a or b:如果 a 为true,则返回a;否则返回b
举几个例子:
print(4 and 5) --> 5
print(nil and 13) --> nil
print(false and 13) --> false
print(4 or 5) --> 4
print(false or 5) --> 5
我没理解Lua为什么这么设计,也许是为了方便的处理某种特定的问题吧。可是他为什么不能
提供一种其它所有语言一致的 and ,or,的含义,并且使用大家所熟悉的关键字来表示呢?
2.
比较运算
< > <= >= == ~=
从 == 来看,跟C/C++一路的,可是为什么用~=表示不等于? (Python用<>,也很无聊)
程序员是不是为了表明自己与众不同而这么做的?这是不是一种虚荣心的表现? 更进一步说,是不是
OpenSource阵营的程序员对扬名立万更加在意? (因为他们不为了钱)
郁闷的回家吃饭,明天开会,到底应该建议用哪种脚本呢?