1

该游戏是高级术语书中的单词搜索游戏,术语代码使用 [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
4

2 回答 2

0

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

这似乎是 Lingo 语法的旧版本。[cc]显然,代表“延续字符”。它基本上使编译器忽略它之后的换行符,以便它将所有内容从[#comment:to#default: VOID]视为一长行,这是语法上正确的编写方式。

如果我没记错的话,曾几何时,制作 Lingo 的人做了一个更疯狂的决定,让续行字符看起来像这样:¬当然,这并没有在很多地方打印,所以像你的书这样的一些文本使用了东西就像[cc]在它的位置一样。

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

于 2015-03-11T08:34:05.653 回答
0

我在早期的 Director 中编程,但从那以后的许多年里一直在学习其他语言。我理解这段代码。该函数尝试生成字典字典。在准 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' }

}

所以我希望能解释哈希字符。这是 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 年术语中的相同构造行为,我们使用更新的面向对象的点语法在属性列表上调用 addProp

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 的属性检查器调色板窗口,显示属性描述列表功能正常

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

于 2016-04-22T00:51:21.800 回答