fin*_*elp 9 enums coffeescript
我在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'
Run Code Online (Sandbox Code Playgroud)
Nik*_*kov 19
enum的整个概念在动态语言中是无用的,如元组,类型列表,地图和许多其他东西,Javascript(Coffeescript)是动态的.使用动态语言时,您只需忘记类型检查并使用现有的更通用的结构来解决您的问题.使用数组而不是列表和元组,使用对象而不是映射和枚举,只需信任传递给函数的值类型,但对代码进行大量单元测试.无论好坏(对于更糟糕的IMO),这就是在这里完成工作的方式.
在你的情况下,我建议只将值存储在单个对象中,如下所示:
HTTPStatusCodes =
ok : 200
badRequest : 400
unauthorized : 401
Run Code Online (Sandbox Code Playgroud)
并像这样访问它:
class SomeService
okCode: ->
HTTPStatusCodes.ok
failureCodes: ->
code for key, code of HTTPStatusCodes when code >= 400
Run Code Online (Sandbox Code Playgroud)
小智 5
我知道我迟到了,但为了后代,我提出了一个"coffeethonic"解决方案(本着打字少的精神):
[ a, b, c ] = [1..3]
Run Code Online (Sandbox Code Playgroud)