なぜこれらが存在するのですか?ばかげているようです。ほとんどの動的言語と同様に、AppleScript型は、値によって渡されて使用する意味がないinteger
sやsのような不変のプリミティブ型、またはs、s、s、これはすでに参照によって渡されています。どのように完全に冗長ではありませんか?これは、AppleのAppleScript言語ガイド(リンクを失った場合はhttp://developer.apple.com/library/mac/#documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html )から抜粋した例です。real
a reference to
application
script
record
a reference to
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
オブジェクトは実際には別の変数またはプロパティへのポインタを保持する変数/プロパティです。