Lua1.0使用与研究-iolib

来源:互联网 发布:mac系统管理软件 编辑:程序博客网 时间:2024/06/14 07:54
首先,根据iolib.c了解到 iolib 注册的函数有
  readfrom
  writeto
  read
  write
  execute

  remove

在这里,readfrom,writeto是可以指定输入输出文件的,

我为了方便,并没有使用这两个接口进行测试,直接使用了默认的stdin和stdout进行io测试。

还记得..是连接符吗?

    write("sin (3) = "..sin(3).."\n")

会在终端上输出sin (3) = 0.14112

注意write接口不会自动增加换行符。例如下面的测试,如果想写入一个数字,然后换行,只能这样写。
    write("666.123","f<10.3")
    write("\r\n")
    write("666.123","f>10.3")
    write("\r\n")
    write("666.123","f|10.3")
    write("\r\n")

上面的f>,f<,f|叫做格式化写。看一下输出就知道什么意思了。


这个的f可不是format的意思,是float的意思,10表示输入字符串的宽度,.3表示小数点后的位数

觉得lua代码神奇的人,看看对应的c实现,是不是觉得也很容易。

如果想给写脚本的人提供方面,用你写的c去实现吧。


格式化读取
readtest = read("f5");
print("readret= "..readtest)

无格式化读取
readtest = read();
print("readret= "..readtest)


如果你输入空格,回车后,程序一直等待输入。因为lua实现会忽略前面输入的所有空格

另外write和read基于现在的功能,还是有优化空间的,毕竟是1.0版本。

大家可以测试一下。


如何实现一个lua脚本的循环执行呢,下面这个代码可以做到

loop.lua

print("I am looping")

execute('./lua loop.lua')

然后在终端输入  ./lua loop.lua ,loop.lua这个脚本将被反复执行,直到你按下ctrl+c

看一下execute对应的c代码,大家就都清楚是怎么回事了。