本章节介绍简要介绍基本的lua语法,来自RUNOOB.COM基础教学,如有問題,请联系処理
Lua 的语法比较简单,比较容易理解,Powerful Features。所以,简单的归纳一下Lua的一些语法ルール,帮助クイック·エントリー
1 注释
1.1 单行注释
写一1つの手続き,总是少不了注释的。在Lua中,单行注释中,连续2つ减号"--"表示注释的开始,一直延续到行末为止。相当于C、C++语言中的"//",如下所示
---------- HTTP POST CHANGE PROJECT START ----------
function on_http_finish_cb(key, value)
if key=='data'
then
-- do logical operations, user code
bell_cnt = 0
end
end
1.2 多行注释中
由"--[["表示注释开始,并且一直延续到"--]]"为止。这种注释相当于C语言中的"/.../",如下所示
---------- HTTP POST CHANGE PROJECT START ----------
function on_http_finish_cb(key, value)
if key=='data'
then
-- do logical operations, user code
bell_cnt = 0
--[[ for i = sc_comeState, sc_bellFinsh
do
set_text(i, 3, '00 : 00')
end--]]
end
end
2. 语句块
语句块在C中是用"{"和"}"括起来的,在Lua中,它是用do 和 end 括起来的,end表示最近一个代码块的结束,比如:
for i = 0, 10
do
print("Hello")
end
或者用then和end括起来
if 1 + 1 ==2
then
print("Hello")
end
3. 变量タイプ
Lua 是动态タイプ语言,ないタイプ定义(タイプ像C,整形、符号なし。、文字等等),只需要为变量赋值。 值可以存储在变量中,作为参数传递或结果戻る。Lua 中有 8 个基本タイプ分别为:nil、boolean、number、string、userdata、function、thread 和 table,实际屏幕常用タイプ主要有以下几种
| Type | Description |
|---|---|
| nil | 这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false),应用中避免出现nil值,需要做非法判断 |
| number | 屏幕的MCU为32位,实际屏幕应用中,赋值的数值相当与长整形或单精度浮点型 |
| string | ストリング·ストリング由一对双引号或单引号来表示 |
| table | Lua 中的表(table)其实是一个"关联配列"(associative arrays),配列的索引可以是数字、ストリング·ストリング或表タイプ。在 Lua 里,table 的作成是経由"构造表达式"来完成,最简单构造表达式是{},用来作成一个空表 |
| function | 由 C 或 Lua 编写的函数 |
3.1 nil(空)
nil タイプ表示一种ない任何有效值,它只有一个值 -- nil,例如打印一个ない赋值的变量,便会出力一个 nil 值:
> print(type(a))
nil
>
边界值判断,在实际应用中,引用的变量需要最好要判断は、否为空,或防止为空
if type(a) == 'nil'
then
–-user code
else
-–user code
end
3.2 number(数字)
Lua デフォルト只有一种 number Type -- double(双精度),但是屏幕的MCU是32位処理器,所以,在屏幕运行下仅サポート单精度
以下几种写法都被看作是 number Type:
local a = 2
local b = 2.2
local c = 0.2
local d = 0.2e-1
print(type(a))
print(type(b))
print(type(c))
print(type(d))
运行实例,以上代码执行结果:
>number
>number
>number
>number
>>number
>number
3. 3 string(ストリング·ストリング)
ストリング·ストリング由一对双引号或单引号来表示
local string1 = "this is string1"
local string2 = 'this is string2'
3.4 table(表)
相当于C里面的配列,在 Lua 里,table 的作成是経由"构造表达式"来完成,最简单构造表达式是{},用来作成一个空表。也可以在表里追加一些データ,直接初期化表,下标デフォルト从1开始,出力测试如下所示
-- 作成一个空的 table
local tbl1 = {}
-- 直接初始表
local tbl2 = {"apple", "pear", "orange", "grape"}
print(tbl2[0])
print(tbl2[1])
运行实例,以上代码执行结果:
>nil --报错
>apple
给表的下标0赋值,在出力才正常
-- 直接初始表
local tbl2 = {"apple", "pear", "orange", "grape"}
tbl2[0] = "banana"
print(tbl2[0])
print(tbl2[1])
运行实例,以上代码执行结果:
>banana
>apple
3.5 function(函数)
在 Lua 中,函数定义声明如下所示,必须定义在被调用者上面
-- function_test.lua 脚本記事件
function factorial1(n)
if n == 0
then
return 1
else
return n * factorial1(n - 1)
end
end
print(factorial1(5))
运行实例,以上代码执行结果:
>120
4 变量定义
变量在使用前,需要在代码中进行声明,即作成该变量,变量的デフォルト値均为 nil
全局变量:Lua 中的变量全是全局变量,那怕是语句块或是函数里,除非用 local 显式声明为局部变量
局部变量:作用域为从声明位置开始到所在语句块结束
-- test.lua 文件脚本
a = 5 -- 全局变量
local b = 5 -- 局部变量
function joke()
c = 5 -- 全局变量
local d = 6 -- 局部变量
end
print(c,d) --> 5 nil
do
local a = 6 -- 局部变量
b = 6 -- 对局部变量重新赋值
print(a,b); --> 6 6
end
print(a,b) --> 5 6
5 控制语句
5.1 if(判读语句)
控制構造的条件表达式结果可以是任何值,Lua认为false和nil为假,true和非nil为真。要注意的是Lua中 0 为 true:
local a = 0
if a == 0
then
print("a = 0")
elseif a > 0
then
print("a > 0 ")
else
print("a < 0 ")
end
运行实例,以上代码执行结果:
>a = 0
サポートなし。switch case 语句
5.2 while(循环)
在条件为 true 时,让程序重复地执行某些语句。执行语句前会先チェック条件是否为 true
local a = 10
while(a > 0 )
do
a = a - 1
end
루 프 구 문 형 식의 Lua 프로그래밍 언어 의 숫자 값 :
- numerical valuefor循环
루 프 값
Lua プログラミング语言中数值 for 循环语法格式,var 从 exp1 变化到 exp2,每次变化以 exp3 为步长递增 var,并执行一次exp 3 은 선택 사항 이며 지정 하지 않으면 기본 값 은 1 입니다 .
for var = exp 1, exp 2, exp 3 do
<실행 체>
끝
인 스턴 스 루 프 출 력 1 - 5 값 :
for i = 1. 5 do
print (i)
끝
인 스턴 스를 실행 하면 위의 코 드가 실행 됩니다 .
>1
>2
>3
>4
>5
범 용 for 루 프
일반 for 루 프는 ja va 의 fore ach 문 과 마찬가지로 반복 기 함 수를 통해 모든 값을 통과 합니다 . Lua 프로그래밍 언어 의 일반 for 루 프 구 문 형 식 입니다 . i 는 배 열 인 덱 스 값 이고 v 는 해당 인 덱 스의 배 열 요소 값 입니다 . ipa irs 는 배 열 을 반복 하기 위해 Lua 에서 제공하는 반복 기 함 수 입니다 .
- 배 열 a 의 모든 값을 인쇄 합니다 .
a = {" one ", " two ", " three "}
ipa irs (a) do 의 i , v 에 대해
print ( i , v)
끝
인 스턴 스 순 환 배 열 days
days = {" 일요일 ", " 월 요일 ", " 화 요일 ", " 수 요일 ", " 목 요일 ", " 금요일 ", " 토 요일 "}
for i , v in ipa irs (day s)
도 (Do)
인쇄 (v)
끝
위의 예 제 출 력은 다음과 같습니다 .
>일요일
>월 요일
>화 요일
>수 요일
>목 요일
>금요일
>토 요일 .
6 운영 자
6. 1 산 술 연 산 자
다음 표 에서는 Lua 언어 에서 일반적으로 사용되는 산 술 연 산 자를 나 열 하고 A 의 값 은 10 이 고 B 의 값 은 20 입니다 .
| & | & | |
| 操作符 | Description | 实例 |
|---|
다음 예 제를 통해 산 술 연 산 자의 적용 을 더 잘 이해할 수 있습니다 .
a = 21
b = 10
c = a + b
.. print (" L ine 1 - c 의 값 은C)
c = a - b
.. print (" L ine 2 - c 의 값 은C)
c = a * b
.. print (" L ine 3 - c 의 값 은c)
c = a / b
.. print (" L ine 4 - c 의 값 은C)
c = a % b
.. print (" L ine 5 - c 의 값 은C)
c = a ^ 2
.. print (" L ine 6 - c 의 값 은C)
c = - a
.. print (" L ine 7 - c 의 값 은C)
c = a ~ b
.. print (" L ine 8 - c 의 값 은C)
c = a
.. print (" L ine 9 - c 의 값 은C)
c = a| b
.. print (" L ine 10 - c 의 값 은C)
위의 절차 의 실행 결과는 다음과 같습니다 .
>Line 1 - c 의 값 은 다음과 같습니다 . 31
>Line 2 - c 의 값 은 11
>Line 3 - c 의 값 은 다음과 같습니다 . 210
>Line 4 - c 의 값 은 다음과 같습니다 . 2.1
>Line 5 - c 의 값 은 다음과 같습니다 . 1
>Line 6 - c 의 값 은 다음과 같습니다 . 441
>Line 7 - c 의 값 은 다음과 같습니다 . -21
>Line 6 - c 의 값 은 다음과 같습니다 . 31
>Line 7 - c 의 값 은 다음과 같습니다 . 0
>Line 7 - c 의 값 은 다음과 같습니다 . 31
6. 2 관계 연 산 자
다음 표 에서는 Lua 언어 에서 일반적인 관계 연 산 자를 나 열 하고 A 의 값을 10, B 로 설정 합니다 . 값 은 20 입니다 .
| 연 산 자 설명 인 스턴 스 == 는 두 값 이 같 는지 여 부를 검 출 하고 , 같은 값 은 true 를 반환 하며 , 그렇지 않으면 false (A == B) 를 false 로 반환 합니다 . | ||
|---|---|---|
| ~= 는 두 값 이 같 는지 여 부를 검 출 하고 , 불 균 형 은 true 를 반환 하며 , 그렇지 않으면 false (A ~= B) 가 true 를 반환 합니다 . | ||
| > | 왼쪽 값 이 오른쪽 값 보다 큰 경우 true 를 반환 하고 그렇지 않으면 false (A B) 가 false 입니다 . | > |
| < | 왼쪽 값 이 오른쪽 값 보다 큰 경우 false 를 반환 하고 그렇지 않으면 true (A B) 가 true 입니다 . | < |
| >왼쪽 값 이 오른쪽 값 보다 크 거나 같 으면 true 를 반환 하고 그렇지 않으면 false 를 반환 합니다 (A = B). | > | |
| <왼쪽 값 이 오른쪽 값 보다 작 거나 같 으면 true 를 반환 하고 그렇지 않으면 false 를 반환 합니다 (A = B). | < |
다음 예 제를 통해 관계 연 산 자의 적용 을 더 잘 이해할 수 있습니다 .
a = 21
b = 10
if (a == b)
그러면
print (" L ine 1 - a 는 b 와 같습니다 ")
다른 것
print (" L ine 1 - a 는 b 와 같지 않습니다 ")
끝
if (a ~ = b)
그러면
print (" L ine 2 - a 는 b 와 같지 않습니다 ")
다른 것
print (" L ine 2 - a 는 b 와 같습니다 ")
끝
if ( a
그러면
print (" L ine 3 - a 가 b 보다 작 다 ")
다른 것
print (" L ine 3 - a 는 b 보다 크 다 ")
끝
if ( a
그러면
print (" L ine 4 - a 는 b 보다 크 다 ")
다른 것
print (" L ine 5 - a 보다 작 거나 b 와 같 음 ")
끝
a 및 b 의 값을 변경 합니다 .
a = 5
b = 20
if ( a
그러면
print (" L ine 5 - a 보다 작 거나 b 와 같 음 ")
끝
if ( b
그러면
print (" L ine 6 - b 는 a 보다 크 다 ")
끝
위의 절차 의 실행 결과는 다음과 같습니다 .
>선 1 - a 는 b 와 같지 않습니다 .
>선 2 - a 는 b 와 같지 않습니다 .
>Line 3 - a 가 b 보다 크 거나 같 음
>Line 4 - a 는 b 보다 크 다
>선 5 - a 가 b 보다 작 거나 같 음
>Line 6 - b 가 a 보다 크 거나 같 음
6. 3 논 리 연 산 자
다음 표 에서는 Lua 언어 에서 일반적으로 사용되는 논 리 연 산 자를 나 열 하고 A 의 값을 true 로 , B 의 값을 false 로 설정 합니다 .
| 연 산 자는 인 스턴 스 및 논 리 및 연 산 자를 설명 합니다 . | ||
|---|---|---|
| A 가 false 인 경우 A 를 반환 하고 그렇지 않으면 B 를 반환 합니다 . | (A 및 B) 가 false 입니다 . | |
| or 논 리 또는 연 산 자 입니다 . | A 가 true 인 경우 A 를 반환 하고 그렇지 않으면 B 를 반환 합니다 . | (A 또는 B) 는 true 입니다 . |
| not 논 리적 비 연 산 자 입니다 . | 논 리 연 산 의 결과 와는 달리 , 조건 이 true 인 경우 논 리 비 는 false 입니다 . | not (A 및 B) 는 true 입니다 . |
다음 예 제를 통해 논 리 연 산 자의 적용 을 더 잘 이해할 수 있습니다 .
a = true
B = true
if (a 및 b)
그러면
print (" a 및 b - 조건 이 true ")
끝
if (a 또는 b)
그러면
print (" a 또는 b - 조건 이 true " 입니다 .)
끝
print (" -- -------- - 분 할 선 -- -------- - ")
a 및 b 의 값을 변경 합니다 .
a = false
B = true
if (a 및 b)
그러면
print (" a 및 b - 조건 이 true ")
다른 것
print (" a 및 b - 조건 이 false ")
끝
if (no (a 및 b))
그러면
print (" not (a and b) - 조건 이 true ")
다른 것
print (" not (a and b) - 조건 이 false ")
끝
위의 절차 의 실행 결과는 다음과 같습니다 .
>a 및 b - 조건 이 true 입니다 .
>a 또는 b - 조건 이 true 입니다 .
>-- ---- --- 분 할 선 -- ---- ---
>a 및 b - 조건 이 false 입니다 .
>not (a and b) - 조건 이 true 입니다 .
6. 4 다른 연 산 자
다음 표 에서는 Lua 언어 의 연결 연 산 자와 테이블 또는 문자 열 의 길 이를 계산 하는 연 산 자를 나 열 합니다 .
| 연 산 자 설명 인 스턴 스 .. | ||
|---|---|---|
| 두 개의 문자 열 을 연결 합니다 . a | b , 여기서 a 는 " H ello ", b 는 " World " 이며 출 력은 " H ello World " 입니다 . | |
| # 문자 열 또는 테이블 의 길 이를 반환 하는 1 차 원 연 산 자 입니다 . | # " 안 녕 하세요 " 5 을 반환 합니다 . |
다음 예 제를 통해 테이블 또는 문자 열 길 이를 계산 하는 연 산 자와 연결 연 산 자의 적용 을 더 잘 이해할 수 있습니다 .
< codee > a = " 안 녕 하세요 "
b = " 세계 "
print (" a 와 b 를 연결 하는 문자 열 ", a .. (b)
print (" b 문자 열 길이 ", # b)
print (" Str ing Test Leng th ", # " Test ")
print (" 초 보자 튜 토 리 얼 URL 길이 ", # " www . example . com ")
위의 절차 의 실행 결과는 다음과 같습니다 .
>문자 열 a 와 b 를 연결 합니다 . 안녕 하세요 , 세계
>b 문자 열 길이 5
>문자 열 테스트 길이 4
>초 보 자 튜 토 리 얼 URL 길이 14
6. 5 연 산 자 우선 순 위
높은 순 서 에서 낮은 순 서 :
^
not - (단 일)
* / %
+ -
..
< > <= >= ~= ==
그리고
또는
^ 와 ^ 를 제외하고 는 ... 모든 이 진 연 산 자는 왼 쪽으로 연결 됩니다 .
a + i b / 2 + 1< <--> (a+i)
5 + x ^ 2 * 8 <--> 5 + ((x ^ 2) * 8)
a <--> (a
- x ^ 2 <--> - ( x ^ 2)
x ^ y ^ z <--> x ^ ( y ^ z)
다음 예 제를 통해 Lua 언어 연 산 자의 우선 순 위를 더 잘 이해할 수 있습니다 .
a = 20
b = 10
c = 15
d = 5
e = (a + b) * c / d ; * -- (30 \ * 15) / 5
print (" ( a + b) * c / d 는 : ", e) 입니다 .
e = ((a + b) * c) / d ; * -- (30 \ * 15) / 5
print ( " ( (a + b) * c) / d 는 : ", e 입니다 .
e = (a + b) * (c / d); * -- (30) \ * (15 / 5)
print (" ( a + b) * (c / d) 는 : ", e) 입니다 .
e = a + (b * c) / d ; * - 20 + (1 50 / 5)
print (" a + (b * c) / d 는 : ", e)
위의 절차 의 실행 결과는 다음과 같습니다 .
>(a + b) * c / d 연 산 값 은 다음과 같습니다 . 90.0
>(a + b) * c) / d 는 다음과 같습니다 . 90.0
>(a + b) * (c / d) 는 다음과 같습니다 . 90.0
>a + (b * c) / d 는 다음과 같습니다 . : 50.0
Leave a Reply