游戏是高级教科书中的单词搜索游戏,而语言代码正在使用[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
答案 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
上面的屏幕截图显示了它在OS X Yosemite上的Director 12.0中运行。