gpt4 book ai didi

reference - AppleScript 引用对象 - 帮助我理解它们

转载 作者:行者123 更新时间:2023-12-04 20:12:07 26 4
gpt4 key购买 nike

为什么这些会存在?这似乎很荒谬。与大多数动态语言一样,AppleScript 类型似乎是不可变的原始类型,如 integer s 和 real s 将按值(value)传递并且与 a reference to 一起使用没有任何意义,或类似对象的类型,如 application s, script s,或 record s,它们已经通过引用传递了。怎么样a reference to不完全多余?以下是 Apple 的 AppleScript 语言指南中的示例(如果您丢失了链接,则为 http://developer.apple.com/library/mac/#documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html):

tell app "Finder" to set diskRef to a ref to startup disk
--result: startup disk of application "Finder"

所以你的意思是告诉我,如果我这样做,
tell app "Finder" to set diskObj to startup disk
--result: startup disk of application "Finder"

applescript 运行时将发送一个苹果事件发送到 Finder 进程告诉它,“嘿 - 有些人只是让你把/dev/disks01 的八位字节流返回给我!哈哈!我想他应该问为 a reference to它!让我们开始吧!这将需要一段时间!”

我正在用 Python 编程,我这样做:
m = fileHandle.read( 1000000000 ) #and then wait a little while
n = m

我只是在内存中复制了一些数据吗?当然不是。但是 a reference to的存在在 AppleScript 中暗示将对象分配给新变量是按值操作。如果是这样的话,与 copy 有什么关系?命令?

这里发生了什么?

更新:好吧,就当我是一个困惑的 Python 程序员吧。只是为了让这个更清楚一点,我仍然认为
tell app "Finder" to set diskRef to a ref to startup disk
--result: startup disk of application "Finder"

是一个糟糕的例子(取自applescript 语言指南)。但是@Chuck 的示例 a reference to属性本身持有一个可以被重新分配的原始类型是更好的类型。 IOW,一个 reference object 实际上是一个变量/属性,它包含指向另一个变量或属性的指针。

最佳答案

我的理解是,您可以将引用视为指针。

set x = 5
set y to reference to x
set contents of y to 10
log x -- 10

通常,您不会手动创建引用。 AppleScript 库和字典可能会返回它们,但随后您可以使用返回项的属性(例如 name of startup disk)。

老实说,我会忽略它们。在使用 AppleScript 的 20 年中,我可能不得不查阅文档以进行引用。如果您尝试在 AppleScript 中做某事并且认为您需要创建一个引用变量,那么您可能不会以最直接的方式来做。

退房 this MacTech article有关 AppleScript 引用的更详细讨论。

关于reference - AppleScript 引用对象 - 帮助我理解它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5824660/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com