How do I create a UUID (GUID) in Livecode (or HyperTalk)?
如何在livecode或hypercard中创建UUID(=通用唯一标识符,或guid=全局唯一标识符,微软语言)?
UUID的目标是在没有中央协调的情况下为信息片段提供几乎唯一的键。
工具书类
- 类型4 UUID(维基百科)
- 如何在javascript中创建guid
- guid和uuid有什么区别吗?
如果您在UNIX上(如Linux或MacOS),可以使用shell()函数调用uuidgen终端命令。应该是这样的
1 | put shell("uuidgen") into theUUID |
这有点麻烦(创建一个shell,在其中运行一个命令行应用程序,然后再次退出它),但是可以在较旧的livecode版本上工作,这与shell脚本的工作方式没什么不同。
在hypercard中,您必须在脚本设置为applescript的对象中使用applescript,或者使用"do x as applescript"命令。不确定applescript是否可以本机构建UUID,但如果不能,则可以使用applescript运行shell脚本。(shell()函数在hypercard中不存在,它是由supercard,iirc发明的)。
如果没有任何帮助,这里有一个描述如何创建标准uuid的规范:http://www.opengroup.org/dce/info/draft-leach-uuid s-guids-01.txt它不特定于任何编程语言。
在Livecode6.1(今天发布)中,您可以使用uuid函数创建uuid。默认为类型4随机UUID,并实现了类型3和5基于摘要的UUID。
到目前为止(至少在6.6.1版中),可以使用不带shell的
1 2 3 | if the type is empty or random a version 4 (random) UUID is returned. A cryptographic quality pseudo-random number generator is used to generate the randomness. If the type is md5 a version 3 UUID is returned. If the type is sha1 a version 5 UUID is returned. |
以下函数创建类型4(随机)UUID:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | function getUUID local tUUIDpattern local tUUID local tHexDigits put"xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx" into tUUIDpattern put"1234567890abcdef" into tHexDigits repeat for each char tChar in tUUIDpattern if tChar ="x" then put any char of tHexDigits after tUUID else put tChar after tUUID end if end repeat return tUUID end getUUID |