2013-12-12 27 views
0

是否可以在Lua中创建变量作为特定类型?如何用Lua中的类型声明变量

E.g. int x = 4

如果这是不可能的,是总有一些办法有一个假的“类型”的变量之前显示的,以致任何阅读代码就知道什么类型的变量应该是?

E.g. function addInt(int x=4, int y=5),但x/y仍然可以是任何类型的变量?我发现在它之前输入变量的类型要容易得多,而不是在函数的上面添加注释,以便让读者知道它应该是什么类型的变量。

我问的唯一理由是不变量限制到特定的数据类型,而只是有变量之前把数据类型的能力,不管做任何事情或没有,让读者知道它应该是什么类型的变量而不会出错。

回答

0

我能想到的要做到这一点的唯一方法,是通过在C

Lua Integer type

创建一个自定义类型
+0

我知道,每个变量都有一个类型,但有把一些变量名之前没有导致错误的方式,比如foo X = 5?我不需要假的“类型”来做任何事情,但我想在那里,所以我知道当我看着我的功能时,我的变量应该是什么类型。对不起,如果我不清楚我的帖子。 – Drew

+0

谢谢!我发现你链接的线程的OP使用了a = int(5),并且实现了我想要做的事情。我不一定需要在变量名前面加上类型 - 我只是希望它在那里显示类型以供参考。 – Drew

+0

在Lua中创建自定义类型不会更改语法。该线程是关于创建一个自定义行为的新类型,但变量像以前一样是无类型的。但是,如果语法“a = int(5)”可以接受,那么很容易就可以在不制作自定义类型的情况下完成该工作。 @EchoFive – bames53

3

你可以做到这一点使用意见:

local x = 4 -- int 

function addInt(x --[[int]], 
       y --[[int]]) 

您可以从您的其他评论工作中使用使得语法a = int(5)如下:

function int(a) return a end 
function string(a) return a end 
function dictionary(a) return a end 

a = int(5) 
b = string "hello, world!" 
c = dictionary({foo = "hey"}) 

尽管如此,这并不能真正为评论带来任何好处。

+0

“我发现在它之前输入变量的类型要容易得多,而不是发表评论......”我知道我可以评论,正如我在文章中所述 - 我只是想知道是否有“假”数据在变量可能之前键入。 – Drew

+0

@EchoFive我的示例旨在表明您可以使用严格的格式。你的建议意味着像' - [[这个函数需要几个int]] addInt(x,y)''而我有点扩展语法:'function addInt( - [[int]] x, - - [[int]] y)'。 – bames53

+1

@EchoFive只要检查[Lua语法](http://www.lua.org/manual/5.1/manual.html#8)就会告诉你,评论是你可以在这些位置插入的唯一东西。 – bames53

0

不,但我理解你的目标是在阅读和编写函数调用时增进理解。

陈述的参数预期的数据类型只增加一点点在给予对功能的规范条款。另外,一些函数参数是多态的,接受一个特定的值,或者一个函数或表格,从中获得函数操作的上下文的值。例如,请参阅string.gsub

当读取一个函数调用时,调用站点上唯一已知的变量或字段的值将作为函数调用(有时读作函数的“名称”),而表达式为作为实际参数传递。将参数表达式重构为命名局部变量以增加可读性有时很有用。

写入函数调用时,函数的名称是关键。形式参数的名称也很有帮助。但是,名称(如类型)并不包含很多规范。最大的帮助来自与IDE结合使用的嵌入式结构化文档,它推断名称的上下文,并执行内容帮助和可用文档的演示。

luadoc是文档中的一个这样的系统。你可以为你声明的函数写luadoc。

Eclipse Koneki LDT是一个这样的IDE。由于Lua的动态性,这是一个难题,所以LDT并不总是像人们想象的那样有帮助。 (显然,LDT不使用luadoc;它发展了自己的嵌入式文档系统。)

enter image description here