Lingo Code“[cc]”即将出现故障

时间:2015-03-10 12:57:31

标签: adobe-director lingo

游戏是高级教科书中的单词搜索游戏,而语言代码正在使用[cc]作为代码错误。有什么问题或者[cc]的使用过时了?如果是这样,怎么纠正呢?

 on getPropertyDescriptionList me
   list = [:]

   -- the text member with the words in it
   addProp list, #pWordSource,[cc]
    [#comment: "Word Source",[cc]
    #format: #text,[cc]
    #default: VOID]

 addProp list, #pEndGameFrame,[cc]
    [#comment: "End Game Frame",[cc]
    #format: #marker,[cc]
    #default: #next]

    return list
 end

2 个答案:

答案 0 :(得分:0)

我想这是来自here的代码,对吧?

这似乎是Lingo语法的旧版本。显然,[cc]代表“延续性”。它基本上使得编译器在它之后立即忽略了换行符,因此它将[#comment:#default: VOID]的所有内容看作一条长行,这是编写它的语法正确的方法。

如果我没记错的话,曾经让制造Lingo的人做出了一个更疯狂的决定,并使延续角色看起来像这样:¬当然,这并没有在很多地方打印,所以像你的书这样的文章会使用像[cc]这样的东西。

在现代版本的Lingo中,延续字符为\,就像在C中一样。

答案 1 :(得分:0)

我在早期的导演中编程,但从那时起多年来一直在使用其他语言。我理解这段代码。该函数尝试生成字典字典。在准JSON:

{
  'pWordSource': { ... } ,
  'pEndGameFrame': { ... }
}

它正在创建一个字符串哈希,然后存储一个" pWordSource"作为一个新的键指向它自己的3项哈希。然后,系统使用新密钥" pEndGameFrame"重复该过程,提供另一个3项散列。所以只是从上面的代码示例扩展省略号:

{

  'pWordSource': { 'comment': 'Word Source', 'format': 'text', 'default': null } ,

  'pEndGameFrame': { 'End Game Frame': 'Word Source', 'format': 'marker', 'default': 'next' }

}

所以我希望能解释哈希字符。这是一种语言的说法"这不仅仅是一个字符串,它是一个特殊的导演专用系统,我们称之为symbol。它可以在更传统的编程术语中描述为常数。 lingo编译器将用一个整数替换你的#string1,它总是与#string1相关的整数。因为哈希键实际上是整数而不是字符串,我们可以将json模型更改为更像这样:

{

  0: { 2: 'Word Source', 3: 'text', 4: null } ,

  1: { 2:'End Game Frame', 3: 'marker', 4: 'next' }

}

其中:

0 -> pWordSource
1 -> pEndGameFrame
2 -> comment
3 -> format
4 -> default

因此,为了模仿2016年语言中的相同构造行为,我们使用较新的object oriented dot syntax for calling addProp on property lists

on getPropertyDescriptionList me
  list = [:]

  -- the text member with the words in it

  list.addProp(#pWordSource,[       \
          #comment: "Word Source", \
          #format: #text,          \
          #default: void           \
      ])

  list.addProp(#pEndGameFrame,[        \
          #comment: "End Game Frame", \
          #format: #marker,           \
          #default: #next             \
      ])

  return list
end

同样,相同的参考文献显示了如何使用方括号来访问"属性,然后通过设置它们的第一个值来初始化它们。

on getPropertyDescriptionList me
  list = [:]

  -- the text member with the words in it

  list[#pWordSource] = [       \
      #comment: "Word Source", \
      #format: #text,          \
      #default: void           \
  ]

  list[#pEndGameFrame] = [        \
      #comment: "End Game Frame", \
      #format: #marker,           \
      #default: #next             \
  ]

  return list
end

如果您仍然对反斜杠的作用感到困惑,还有其他方法可以使代码更加垂直。

on getPropertyDescriptionList me
  list = [:]

  -- the text member with the words in it

  p = [:]
  p[#comment] = "Word Source"
  p[#format] = #text
  p[#default] = void

  list[#pWordSource] = p

  p = [:] -- allocate new dict to avoid pointer bug
  p[#comment] = "End Game Frame"
  p[#format] = #marker
  p[#default] = #next

  list[#pEndGameFrame] = p

  return list
end

Adobe Director Lingo's Property Inspector palette window, showing the property description list feature working OK

上面的屏幕截图显示了它在OS X Yosemite上的Director 12.0中运行。