蘭州易天網(wǎng)站建設(shè)公司有哪些cpm廣告聯(lián)盟平臺
1、詞匯結(jié)構(gòu)
(1)標(biāo)識符
標(biāo)識符以字母字符或“_”開頭,后跟任意數(shù)量的字母字符,“_”或數(shù)字([0-9])。 是一種區(qū)分大小寫的語言,這意味著同一個字母字符的小寫和大寫表示被視為不同的字符。 例如,“foo”,“Foo”和“fOo”將被視為3個不同的標(biāo)識符。
(2)關(guān)鍵字
以下單詞是語言的保留字,不能用作標(biāo)識符:
base | break | case | catch | class | clone |
continue | const | default | delete | else | enum |
extends | for | foreach | function | if | in |
local | null | resume | return | switch | this |
throw | try | typeof | while | yield | constructor |
instanceof | true | false | static | __LINE__ | __FILE__ |
(3)操作符
! | != | || | == | && | >= | <= | > |
<=> | + | += | - | -= | / | /= | * |
*= | % | %= | ++ | -- | <- | = | & |
^ | | | ~ | >> | << | >>> |
(4)其他符號
{ | } | [ | ] | . | : |
:: | ' | ; | " | @" |
- 常量
一些常量的表示方法:
34 --->十進(jìn)制的整數(shù)
0xFF00A120 --->十六進(jìn)制的整數(shù)
0753 --->八進(jìn)制的整數(shù)
'a' --->整數(shù),表示字母A所對應(yīng)的ascii碼
1.52 --->浮點數(shù)
1.e2 --->科學(xué)計數(shù)法表示的浮點數(shù)
1.e-2 --->也是科學(xué)計數(shù)法表示的浮點數(shù)
"I'm a string" --->常規(guī)的字符串
@"I'm a verbatim string" --->另外一種表達(dá)形式的字符串
@" I'm a multiline verbatim string
(6)注釋
// 單行注釋
/* */ 多行注釋
2、值和數(shù)據(jù)類型
(1)Interger
整數(shù)表示32位的帶符號數(shù):
local a = 123 //十進(jìn)制
local b = 0x0012 //十六進(jìn)制
local c = 075 //八進(jìn)制
local d = 'w' //把'w'的ascii碼的數(shù)值附給d
(2)Float
float表示32位的浮點數(shù):
local a=1.0
local b=0.234
(3)String
字符串是一個不可變的字符序列,修改字符串是創(chuàng)建一個新字符串。
字符串用引號(“)分隔,可以包含轉(zhuǎn)義序列(\ t,\ a,\ b,\ n,\ r,\ v,\ f,\\,\”, \',\ 0,\ x <hh>,\ u <hhhh>和\ U <hhhhhhhh>)。
照字面的字符串文字以@“開頭并以匹配的引號結(jié)尾。照字面的字符串文字也可以延伸到換行符。如果它們這樣做,它們包括引號之間的任何空格字符:
local a = "I'm a wonderful string\n"
//?在字符串的末尾有一個換行符
local x = @"I'm a verbatim string\n"
// \ n被復(fù)制到與常規(guī)字符串中的\\ n相同的字符串中“I'm a verbatim string\n”
對于逐字字符串文字的“無轉(zhuǎn)義序列”規(guī)則的唯一例外是,您可以通過兩個雙引號來轉(zhuǎn)義雙引號:
local multiline = @"
????this is a multiline string
????it will ""embed"" all the new line
????characters
"
(4)Null
null值是一個原始值,表示null,empty或不存在的引用。 Null類型只有一個值,稱為null:
local a = null
(5)Bool
bool數(shù)據(jù)類型只能有兩個。 該數(shù)據(jù)類型,只有true和false兩種取值
(6)Array
數(shù)組是簡單的對象序列,它們的大小是動態(tài)的,它們的索引始終從0開始:
local a ?= ["I'm","an","array"]
local b = [null]
b[0] = a[2];
local x = []; //定義數(shù)組
x.resize(20);//調(diào)整數(shù)組的大小
(7)Function
函數(shù)類似于其他類C語言和大多數(shù)編程語言的函數(shù),但是有一些關(guān)鍵的區(qū)別
函數(shù)聲明
function fun1(a,b,c)
{
????return a+b-c;
}
默認(rèn)參數(shù)
函數(shù)可以有默認(rèn)參數(shù)。
具有默認(rèn)參數(shù)的函數(shù)聲明如下:
function test(a,b,c = 10, d = 20)
{
????....
}
當(dāng)調(diào)用函數(shù)test并且未指定參數(shù)c或d時,VM會自動將默認(rèn)值分配給未指定的參數(shù)。 默認(rèn)參數(shù)可以是任何有效的表達(dá)式。 表達(dá)式在運行時進(jìn)行檢查。
函數(shù)調(diào)用
foo(x,y) ;
3、聲明
程序是一個簡單的語句序列:
stats := stat [';'|'\n'] stats
語句與C系列語言(C / C ++,Java,C#等......)相當(dāng):賦值,函數(shù)調(diào)用,程序流控制結(jié)構(gòu)等。加上一些自定義語句,如yield,table和array constructors。 語句可以用新行或';'(或使用關(guān)鍵字case或default,如果在switch / case語句中)分隔,如果語句后跟'}',則不需要這兩個符號。
(1)語句塊
由大括號({})分隔的一系列語句稱為塊; 塊是一個聲明本身。
(2)?控制流程語句
最常見的控制流語句:
if,?while,?do-while,?switch-case,?for
(2.1)true and false
布爾類型(bool),它認(rèn)為null,0(整數(shù))和0.0(浮點)為false,任何其他值都被認(rèn)為是true的。
(2.2) if/else
根據(jù)表達(dá)式的結(jié)果有條件地執(zhí)行語句:
if(a>b)
????a=b;
else
????b=a;
if(a==10)
{
????b=a+b;
????return a;
}
(2.3) while
條件為真時執(zhí)行語句:
function testy(n)
{
????local a=0;
????while(a<n) a+=1;
????while(1)
????{
????????if(a<0) break;
????????a-=1;
????}
}
(2.4)do/while
執(zhí)行一次語句,然后重復(fù)執(zhí)行語句,直到條件表達(dá)式求值為false:
local a=0;
do
{
????print(a+"\n");
????a+=1;
} while(a>100)
(2.5) switch
Switch是一個控制語句,允許通過將控制權(quán)傳遞給其正文中的一個case語句來多次選擇代碼。 如果case都不匹配會跳轉(zhuǎn)到default標(biāo)簽(如果存在),如果是case實例,則控制將轉(zhuǎn)移到case_exp與exp匹配的case標(biāo)簽。switch語句可以包含多個case,如果2個case具有相同的表達(dá)式結(jié)果,則將首先考慮第一個。default標(biāo)簽只允許一次,必須是最后一個。 break語句將跳轉(zhuǎn)到switch塊之外。
Local i=0;
switch(i)
{
case 0:
????break;
case 1:
????break;
default:
????break;
}
(3) 循環(huán)
(3.1) for
只要條件不等于false,就執(zhí)行一個語句:
for(local a=0;a<10;a++)
{
print(a+"\n");
}
for(;;)
{
????print(loops forever+"\n");
}
(4) break
break語句終止循環(huán)的執(zhí)行(for,while或do / while)或跳出switch語句;
(5) continue
continue運算符跳轉(zhuǎn)到循環(huán)的下一次迭代,跳過以下語句的執(zhí)行。
(6) return
return語句終止當(dāng)前函數(shù)/生成器的執(zhí)行,并可選擇返回表達(dá)式的結(jié)果。 如果省略表達(dá)式,則函數(shù)將返回null。 如果在發(fā)生器內(nèi)使用return語句,則生成器將不再可恢復(fù)。
(7) 局部變量聲明
可以在程序中的任何位置聲明局部變量; 它們存在于它們的聲明到它們已被聲明的塊的末尾之間。 允許局部變量聲明語句作為for循環(huán)中的第一個表達(dá)式:
for(local a=0;a<10;a+=1)
????print(a);
(8) 函數(shù)聲明
創(chuàng)建一個新函數(shù)
function fun1(a,b,c)
{
????return a+b-c;
}
(9) 常量
常量將特定值綁定到標(biāo)識符。 常量類似于全局值,除了它們是在編譯時計算的,并且它們的值不能更改。
常量值只能是整數(shù),浮點數(shù)或字符串文字。 不允許表達(dá)式。 使用以下語法聲明:
const foobar = 100;
const floatbar = 1.2;
const stringbar = "I'm a contant string";
常量始終是全局范圍的,從聲明它們的那一刻起,任何后續(xù)代碼都可以引用它們。
(10) 枚舉
作為常量,枚舉將特定值綁定到名稱。 枚舉也在編譯時進(jìn)行評估,其值不能更改。
枚舉聲明在程序中引入了新的枚舉。 枚舉值只能是整數(shù),浮點數(shù)或字符串文字。 不允許表達(dá):
enum Stuff {
??first, //this will be 0
??second, //this will be 1
??third //this will be 2
}
或
enum Stuff {
??first = 10
??second = "string"
??third = 1.2
}
以與訪問靜態(tài)類成員類似的方式訪問枚舉值。 必須使用枚舉的名稱限定成員的名稱,例如Stuff.second Enumerations將影響具有相同名稱的任何全局槽(使用::語法將保持全局槽可見):
local x = Stuff.first * 2;
(11) 表達(dá)式
每個表達(dá)式也被允許作為語句
4、表達(dá)式
(1) 賦值
正常賦值(=):
a = 10;
(2) 操作符
(2.1) ?: 操作符
根據(jù)表達(dá)式的結(jié)果有條件地評估表達(dá)式。
local a=0;
local x=(a>10)?1:0;
(2.2) 算術(shù)操作符
支持標(biāo)準(zhǔn)算術(shù)運算符+, - ,*,/和%。 除此之外還支持聯(lián)合運算符(+ =, - =,* =,/ =,%=)和遞增和遞減運算符(++和 - );:
a += 2;
//is the same as writing
a = a + 2;
x++
//is the same as writing
x = x + 1
所有操作符都可以正常使用整數(shù)和浮點數(shù); 如果一個操作數(shù)是一個整數(shù)而一個是浮點數(shù),則表達(dá)式的結(jié)果將是float。 +運算符具有字符串的特殊行為; 如果其中一個操作數(shù)是一個字符串,則operator +將嘗試將另一個操作數(shù)轉(zhuǎn)換為字符串并將它們連接在一起。 對于實例和表,調(diào)用_tostring。
(2.3) 關(guān)系操作符
關(guān)系運算符是:==,?<,?<=,?<,?<=,?!=
(2.4) 邏輯運算符
邏輯運算符是:&&,|| ,!
如果第一個參數(shù)為null,則運算符&&(邏輯與)返回null,否則返回其第二個參數(shù)。 操作符|| (邏輯或)如果不是null則返回其第一個參數(shù),否則返回第二個參數(shù)。
如果給定的否定值不是null,則'!'運算符將返回null,如果給定的值為null,則返回不為null的值。
(2.6) 逗號操作符
逗號運算符從左到右計算兩個表達(dá)式,運算符的結(jié)果是右邊表達(dá)式的結(jié)果; 左表達(dá)式的結(jié)果被丟棄:
local j=0,k=0;
for(local i=0; i<10; i++ , j++)
{
????k = i + j;
}
local a,k;
a = (k=1,k+2); //a becomes 3
(2.7) 位操作符
支持標(biāo)準(zhǔn)的運算符&,|,^,?,<<,>>加上無符號右移運算符<<<。?除了將左操作數(shù)視為無符號整數(shù)外,無符號右移與普通右移運算符(<<)完全相同,因此不受符號的影響。?這些運算符僅處理整數(shù)值,將任何其他操作數(shù)類型傳遞給這些運算符將導(dǎo)致異常。
(2.8) 運算符優(yōu)先級
-,?~,?!,?typeof?,?++,?-- | 最高 |
/,?*,?% | ... |
+,?- | |
<<,?>>,?>>> | |
<,?<=,?>,?>= | |
==,?!=,?<=> | |
& | |
^ | |
&&,?in | |
+=,?=,?-= | ... |
,(comma?operator) | 最低 |
(2.9) Integer整數(shù)
integer.tofloat()
將數(shù)字轉(zhuǎn)換為float并返回它
integer.tostring()
將數(shù)字轉(zhuǎn)換為字符串并返回它
integer.tochar()
返回包含由整數(shù)表示的單個字符的字符串。
(2.10) Float浮動數(shù)
float.tointeger()
將數(shù)字轉(zhuǎn)換為整數(shù)并返回它
float.tostring()
將數(shù)字轉(zhuǎn)換為字符串并返回它
float.tochar()
返回一個字符串,其中包含由float的整數(shù)部分表示的單個字符。
(2.11) Bool 邏輯
bool.tofloat()
返回1.0表示true為0.0表示false
bool.tointeger()
返回1表示true為0表示false
bool.tostring()
返回“true”表示true為“false”表示false
(2.12) String 文本
string.len()
返回字符串長度
string.tointeger([base])
將字符串轉(zhuǎn)換為整數(shù)并返回它??梢灾付蛇x參數(shù)base,如果未指定base,則默認(rèn)為base 10
string.tofloat()
將字符串轉(zhuǎn)換為float并返回它
string.tostring()
返回字符串(虛函數(shù))
string.slice(start[,?end])
返回字符串的一部分作為新字符串。復(fù)制從start到end(不包含)。 如果start為負(fù),則索引計算為length + start,如果end為負(fù),則索引計算為length + end。 如果省略end,則end等于字符串長度。
string.find(substr[,?startidx])
從索引startidx開始搜索子字符串(substr)并返回其第一次出現(xiàn)的索引。 如果省略startidx,則搜索操作從字符串的開頭開始。 如果未找到substr,則該函數(shù)返回null。
string.tolower()
返回字符串的小寫副本。
string.toupper()
返回字符串的大寫副本。
format 格式化字符串
format(formatstr,?...)
返回根據(jù)formatstr格式化的字符串以及其后的可選參數(shù)。 格式字符串遵循與標(biāo)準(zhǔn)C函數(shù)的printf系列相同的規(guī)則(不支持“*”)。
sq> print(format("%s %d 0x%02X\n","this is a test :",123,10));
this is a test : 123 0x0A
格式化字符串:
function OnDraw(handle)
{
????local b = format("當(dāng)班產(chǎn)量:%d",Yx(1093));
????SetText(handle,b);
}
abs(x)
以整數(shù)形式返回x的絕對值
acos(x)
返回x的反余弦值
asin(x)
返回x的反正弦值
atan(x)
返回x的反正切值
atan2(x,?y)
返回x / y的反正切值
ceil(x)
返回一個浮點值,表示大于或等于x的最小整數(shù)
cos(x)
返回x的余弦值
exp(x)
返回float參數(shù)x的指數(shù)值
fabs(x)
返回x作為float的絕對值
floor(x)
返回一個浮點值,表示小于或等于x的最大整數(shù)
log(x)
返回x的自然對數(shù)
log10(x)
回x的對數(shù)基數(shù)-10
pow(x,?y)
將x提升到y(tǒng)的冪
rand()
返回0到RAND_MAX范圍內(nèi)的偽隨機(jī)整數(shù)
sin(x)
返回x的正弦值
sqrt(x)
返回x的平方根
srand(seed)
設(shè)置生成一系列偽隨機(jī)整數(shù)的起點
tan(x)
返回x的正切值
RAND_MAX
rand()函數(shù)可以返回的最大值
PI
數(shù)值常數(shù)pi(3.141592)是圓周長與直徑之比
clock()
返回一個浮點數(shù),表示自進(jìn)程啟動以來經(jīng)過的秒數(shù)
date([time[,?format]])
返回一個表,其中包含在槽中拆分的日期/時間:
sec | 秒(0 - 59). |
min | 分鐘?(0 - 59). |
hour | 小時(0 - 23). |
day | 日?(1 - 31). |
month | 月?(0 - 11; 一月= 0). |
year | 年 (當(dāng)前年). |
wday | 星期 (0 - 6; 星期日 = 0). |
yday | 一年的天數(shù) (0 - 365; 1月1日 ?= 0). |
如果省略time,則使用當(dāng)前時間。
如果format是'l'本地時間 或 'u'UTC時間,如果省略則默認(rèn)為'l'(本地時間)。
getenv(varaname)
返回包含環(huán)境變量varname值的字符串
remove(path)
刪除path指定的文件
rename(oldname,?newname)
將oldname指定的文件或目錄重命名為newname指定的名稱
system(cmd)
通過os命令解釋器執(zhí)行字符串cmd。
time()
返回自1970年1月1日午夜00:00:00起經(jīng)過的秒數(shù)。
這個函數(shù)的結(jié)果可以通過函數(shù)date()格式化
endswith(str,?cmp)
如果字符串str的結(jié)尾與字符串cmp匹配則返回true,否則返回false
ecape(str)
在需要轉(zhuǎn)義的字符(”,a,b,t,n,v,f,r,\,”,’,0,xnn).之前添加反斜線返回
format(formatstr,?...)
返回根據(jù)formatstr格式化的字符串以及其后的可選參數(shù)。 格式字符串遵循與標(biāo)準(zhǔn)C函數(shù)的printf系列相同的規(guī)則(不支持“*”)。
sq> print(format("%s %d 0x%02X\n","this is a test :",123,10));
this is a test : 123 0x0A
strip(str)
刪首空,并返回刪除后字符串。
rstrip(str)
刪尾空,并返回刪除后字符串。
split(str,?separtators)
返回在str中出現(xiàn)分隔符的每個點處拆分的字符串?dāng)?shù)組。 分隔符不會作為任何數(shù)組元素的一部分返回。 參數(shù)分隔符是一個字符串,用于指定要用于拆分的字符。
local a = split("1.2-3;4/5",".-/;");
// 返回將是 [1,2,3,4,5]
startswith(str,?cmp)
如果字符串str的開頭與字符串cmp匹配則返回true,否則返回false
strip(str)
刪首尾空,并返回刪除后字符串。