lua 资源:http://www.dcc.ufrj.br/~fabiom/lua/

第一个Lua程序

http://www.dcc.ufrj.br/~fabiom/lua/

原文:https://www.maketecheasier.com/writing-lua-program-linux/

There are a multitude of programming languages out there but if you are looking to learn a new language, one that is easy to grasp, fast and open source is Lua. From the Portuguese word for moon, the Lua language is found in some unexpected places. It is used in Adobe’s Photoshop Lightroom and in games like World ofWarcraft and Angry Birds. In fact Lua is currently the leading scripting language for games. It is also the language used by Corona, a free software development kit that lets you write apps for smartphones and tablets running iOS or Android.

 

Installing Lua is simple. On Ubuntu you can use the Software Center or if you prefer the command line use:

sudo apt-get install lua5.1

Once installed, you have access to two tools, lua which is the Lua language interpreter and luac which is the Lua compiler. Programming in Lua is very easy to learn. Using a text editor, create a file called hellomte.luawith the following line:

print ("Hello Make Tech Easier!")

Save the file and then from the command prompt, go to the directory where you saved the file and run the Lua program like this:

lua hellomte.lua

The output, as I hope you expected, was the text Hello Make Tech Easier!. Congratulations you have written your first Lua program!

You can also run Lua as a stand-alone interpreter like you would for bash or python. This means you can write scripts which act like stand-alone executables. Create a file called looknohands without the .lua extension. In the file add:

#!/usr/bin/env lua
print ("Look no hands!")

The first line tells Linux that this is a script file and the script uses lua. The second line prints out the text “Look no hands!” Before the script can be run, it needs to be given execute permission. To do this run the “chmod” command in the directory with the file in it:

chmod +x looknohands

This tells Linux that this script can be executed, to run it just type:

./looknohands

And you will see the text.

The Luac compiler

If you have any programming experience, you may be expecting that the Lua compiler generates a binary executable that can be run directly on the host, much like a C compiler would. However the Lua compiler is slightly different. Rather than executable code, it produces binary files that can be later loaded and executed within the Lua interpreter. The main advantages of pre-compiling Lua code is that it loads faster and also it protects the source code from being tampered with, either accidentally or intentionally.

Here is a simple Lua program that loops around 10 times printing some text. Create a file calledhellomte10.lua and save it with the following lines of code:

for i=1,10,1 do
print ("Hello Make Tech Easier: ", i)
end

This can be run using the Lua command:

lua hellomte10.lua

However it can also be compiled into Lua binary code like this:

luac -o hellomte10.luac hellomte10.lua

This will create a binary file called hellomte10.luac which can be run just like a normal .lua file:

lua hellomte10.luac

It can also be used from within the stand-alone interpreter. Create a file called hellomte10 without the .lua extension:

#!/usr/bin/env lua
dofile("hellomte10.luac")
 

The dofile() function will load the binary file and execute it. To run the hellomte10  program grant it execute permission using the chmod command and then run it:

./hellomte10

To distribute pre-compiled Lua programs you need to ship the .luac file along with the stand-alone interpreter script file (i.e. hellomte10.luac and hellomte10), but you don’t need to supply the original .lua file.

Conclusion

Lua is a very flexible language which, as we have seen, can be used in a variety of different ways. Try reading the Programming in Lua book to see what else Lua can do.

Lua学习系列(四)的更多相关文章

  1. scrapy爬虫学习系列四:portia的学习入门

    系列文章列表: scrapy爬虫学习系列一:scrapy爬虫环境的准备:      http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_python_00 ...

  2. DocX开源WORD操作组件的学习系列四

    DocX学习系列 DocX开源WORD操作组件的学习系列一 : http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_sharp_001_docx1.htm ...

  3. .net reactor 学习系列(四)---.net reactor应用场景

    原文:.net reactor 学习系列(四)---.net reactor应用场景         前面已经学习了.net reactor一些基础知识,现在准备学习下实际的应用场景,只是简单的保护和 ...

  4. Identity Server4学习系列四之用户名密码获得访问令牌

    1.简介 Identity Server4支持用户名密码模式,允许调用客户端使用用户名密码来获得访问Api资源(遵循Auth 2.0协议)的Access Token,MS可能考虑兼容老的系统,实现了这 ...

  5. MVC3+EF4.1学习系列(四)----- ORM关系的处理

    上篇文章 终于把基础的一些操作写完了 但是这些都是单表的处理 而EF做为一个ORM框架  就必须点说说对于关系的处理 处理好关系 才能灵活的运用EF 关于关系的处理 一般就是  一对一   一对多  ...

  6. Lua学习系列(二)

    资源整理: 风云老师博客: http://blog.codingnow.com/eo/luaoeeeaeau/ 知乎: https://www.zhihu.com/question/20736660 ...

  7. Lua学习系列(一)

    从现在开始,打算学习一门新的脚本语言-lua. 1.什么是lua? a) lua1 • Lua 1.0 was implemented as a library, in less then 6000 ...

  8. Vue学习系列(四)——理解生命周期和钩子

    前言 在上一篇中,我们对平时进行vue开发中遇到的常用指令进行归类说明讲解,大概已经学会了怎么去实现数据绑定,以及实现动态的实现数据展示功能,运用指令,可以更好更快的进行开发.而在这一篇中,我们将通过 ...

  9. WCF学习系列四--【WCF Interview Questions – Part 4 翻译系列】

    WCF Interview Questions – Part 4   This WCF service tutorial is part-4 in series of WCF Interview Qu ...

随机推荐

  1. __declspec(dllexport) 和 __declspec(dllimport)的作用

    operatordll.h #include <iostream> #ifndef _WIN32 #define DLL_EXPORT#else #ifdef OPERATORDLL_EX ...

  2. TP4056大电流1A使用注意事项

    源:TP4056大电流1A使用注意事项 TP4056为南京拓微集成电路有限公司推出的锂电池充电产品系列中的大电流充电产品.具有最大电流1A,峰值电流1.1A,良好环境下甚至峰值1.2A的单节锂离子电池 ...

  3. for in 的各种坑

    for in方法用来遍历数组或者对象的显性属性,就是说我们自己定义的属性都是可以遍历的,而对象固有的属性,比如Object.prototype.toString是遍历不出来的. for in方法简洁好 ...

  4. C++ concepts: Compare

    The concept Compare is a set of requirements expected by some of the standard library facilities fro ...

  5. UITableView的子控件高度不确定处理

    比如,tableView的tableFootView的控件数量是根据网络请求的数据而定的.那么tableView并不能准确的设置其contentSize.处理方法: 在tableFootView的类中 ...

  6. IDAPython: importing “site” failed

    问题:IDA启动时,弹出IDAPython: importing “site” failed对话框. 解决办法:环境变量添加PYTHONHOME,值为python安装路径,比如:C:\Python27

  7. [转]startActivityForResult的用法和demo

    有时候我们需要把A activity提交数据给B  activity处理,然后把结果返回给A 这种方式在很多种情况需要用到,比如我应用的程序需要有拍照上传的功能. 一种解决方案是  我的应用程序 〉调 ...

  8. HDU-1301 Jungle Roads(最小生成树[Prim])

    Jungle Roads Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total ...

  9. JavaScript的异步机制

    我们经常说JS是单线程的,比如node.js研讨会上大家都说JS的特色之一是单线程的,这样使JS更简单明了,可是大家真的理解所谓JS的单线程机制吗?单线程时,基于事件的异步机制又该当如何 1 先看下两 ...

  10. Oracle Sql优化之日期的处理

    1.时,分,秒,年,月,日等日期的常用取值方法 select hiredate, to_number(to_char(hiredate,'hh24')) 时, to_number(to_char(hi ...