月稿静态字段



我想做这样的类:

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
<...>

在文档中,我读到使用写作有助于处理它

您可以通过从实例编辑元表来更改所述值:

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不是局部变量。它是类的实例元表上的一个字段。

相关内容

  • 没有找到相关文章

最新更新