jass函数和c 语言,新企划 新的编译为Jass的语言
該樓層疑似違規已被系統折疊?隱藏此樓查看此樓
沒什么別的意思就是做來玩玩而已,目前只是簡單的構思階段,做不做甚至都還不確定。以下是目前構思的特性
1. 類Lua語法。因為Lua比較熟悉,雖然也有部分語法不喜歡,但大部分都還行。
-- if
if a == 1 then
end
-- loop
for i = 1, 3 do
end
while a == 1 do
end
2. 靜態類型。因為Jass本身就是靜態類型的。語法為
local x:int = 1
local y:string = "2"
local z:string = 3.0 -- 語法錯誤
function foo(a:int, b:int):string
return I2S(a + b)
end
3. 類型推導。在類型可以推斷出來的地方,類型定義可以省略,例如下面都是合法的語法。
local x = 1 -- x的類型是int
local y = "2" -- y的類型是string
local z = 3.0 -- z的類型是float
local w = y -- w的類型是string
4. 數組
local a:int[]
for i = 1, 3 do
a[i] = i
end
5. 兩種定義函數的方法。
function foo(a:int, b:int):string
return I2S(a + b)
end
foo(a:int, b:int):string =>
return I2S(a + b)
end
6. 匿名函數。
-- 由于類型推導,匿名函數定義里的類型都可以省略
TimerStart(t, 1.0, true, function()
DoNothing()
end)
TimerStart(t, 1.0, true, () =>
DoNothing()
end)
7. 類型繼承。
typedef handle unit
8. 內置類型
int 等同于jass里的integer
float 等同于jass里的real
string 等同于jass里的string
bool 等同于jass里的boolean
void 等同于jass里的nothing
不可被繼承
function 等同于jass里的code
不可被繼承,類型需要指明參數和返回值的類型,例如
local foo:(int,int):int
-- 語法錯誤
foo = (a:int):int =>
return a
end
foo = (a:int, b:int):int =>
return a + b
end
9. 模塊化
-- ModuleA文件
-- 局部變量模塊外不可見
local a = 1
-- 使用export讓模塊外可見
export b = 2
-- ModuleB文件
local A = import 'ModuleA'
local a = A.a -- 語法錯誤
local b = A.b
10. 對象
-- Calc文件
local a = 1
export b = 2
export function init(c:int):void
b = a + c
end
-- Main文件
local Calc = class 'Calc'
local a = Calc(10)
11. 函數重載
function add(a:int, b:int):int
return a + b
end
function add(a:string, b:string):string
return a + b
end
local x = add(1, 2) -- 3
local y = add("1", "2") -- "12"
總結
以上是生活随笔為你收集整理的jass函数和c 语言,新企划 新的编译为Jass的语言的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Nvme固体硬盘Intel750,SM9
- 下一篇: 如何评价 GitHub 发布的文本编辑器