我在早期的 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
上面的屏幕截图显示它在 OS X Yosemite 上的 Director 12.0 中运行。