我想这样上课:
class Example
field: false --some field shared for all instances of the class
init: (using field) ->
field = true --want to change value of the static field above
但是在lua我得到了:
<...>
field = false,
init = function()
local field = true //Different scopes of variable field
end
<...>
在文档中,我读到写作使用有助于处理它
答案 0 :(得分:1)
您可以通过从实例编辑元表来更改所描述的值:
class Example
field: false
init: ->
getmetatable(@).field = true
我不建议这样做,类字段可能是你想要使用的:
class Example
@field: false
init: ->
@@field = true
分配类字段时,可以使用@
作为前缀来创建类变量。在方法的上下文中,@@
必须用于引用类,因为@
表示实例。以下是@
如何运作的简要概述:
class Example
-- in this scope @ is equal to the class object, Example
print @
init: =>
-- in this score @ is equal to the instance
print @
-- so to access the class object, we can use the shortcut @@ which
-- stands for @__class
pirnt @@
此外,您对using
的使用不正确。 field
不是局部变量。它是类的实例元表上的一个字段。