我在coffeescript( http://coffeescript.org/ )中玩弄枚举/常量的概念,并想出了以下看起来没问题的代码。对于枚举适合的内容,我如何增强它以使其更好?谷歌对此的搜索尚未显示满意。
class SomeService
@SomeEnumValue : 400
@SomeOtherValue : 402
someFunc: ->
SomeService.SomeEnumValue
ok = new SomeService()
alert ok.someFunc()
if (ok.someFunc() == SomeService.SomeEnumValue) then alert ' some enum value'
最佳答案
枚举的整个概念在动态语言中是无用的,元组、类型列表、映射和许多其他东西也是如此,而 Javascript (Coffeescript) 是动态的。在使用动态语言时,您只需要忘记类型检查并使用现有的更通用的结构来解决您的问题。使用数组而不是列表和元组,使用对象而不是映射和枚举,并且只相信传递给函数的值的类型,但要对代码进行大量的单元测试。无论好坏(更糟的是 IMO),这就是这里的工作方式。
在您的情况下,我建议您将值存储在单例对象中,如下所示:
HTTPStatusCodes =
ok : 200
badRequest : 400
unauthorized : 401
并像这样访问它:
class SomeService
okCode: ->
HTTPStatusCodes.ok
failureCodes: ->
code for key, code of HTTPStatusCodes when code >= 400
关于enums - coffeescript 和枚举值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9369780/