AppleScriptで知らない予約語に遭遇?

Mac mini / Apple M4 Pro / macOS Sequoia 15.1.1(24B2091)

スクリプトエディタ 2.8 / バージョン2.11 (231)


スクリプトエディタにて、以下のたった一文を記述してコンパイルしたところ構文エラーが発生しました.画像はその時のキャプチャーです.この一文だけで実際に何かできるというわけでないですが、今まで見たことのない奇妙な現象として自身には映ったので質問します.

set st to 12

AppleScriptの予約語に st などというものはあったでしょうか.もしあるとすればどういった時に使用するものでしょうか? ちなみにこの st でなく、 s とか str とかだとちゃんとコンパイルできます.

個人的には、AppleSilicon機種に替えてから特にFinderまわりに細々と気持ちの悪い挙動を示すことがあるのでこれはバグなのではと考えていますがどうでしょうか⋯⋯.

ご存知の方がいればお教えください.

Mac mini, macOS 15.1

投稿日 2024/12/15 15:47

返信
スレッドに付いたマーク ランキングトップの返信

投稿日 2025/01/22 20:03

AppleScriptでは、当初からAppleScriptの処理系が定義している予約語と重複した名称の変数を利用できません。


"st"もそのうちの1つです。もしも、予約語との重複を回避したい場合には、もっと長い変数を使うか、変数名をエスケープして|st|などと表記することで解決できます。


set |st| to 100
return |st|
--> 100
返信: 9
スレッドに付いたマーク ランキングトップの返信

2025/01/22 20:03 light289 への返信

AppleScriptでは、当初からAppleScriptの処理系が定義している予約語と重複した名称の変数を利用できません。


"st"もそのうちの1つです。もしも、予約語との重複を回避したい場合には、もっと長い変数を使うか、変数名をエスケープして|st|などと表記することで解決できます。


set |st| to 100
return |st|
--> 100

2024/12/16 18:16 light289 への返信

st と 1st を取り違えるのではなくて、配列の n 番目にアクセスするための構文なんだと思います。


nd rd th も st と同様に構文エラーとなりますし、

set nd to "x" #=> 構文エラー
set rd to "x" #=> 構文エラー
set th to "x" #=> 構文エラー


「2st item」をコンパイルすると、自動的に「2nd item」に変更されます。


予約語だからこうなるんじゃないかなと。


2024/12/23 23:22 light289 への返信

↓st、nd、rd、th についての公式な説明はこれのようです。


Reference Forms


ところで、AppleScript では st などに加えて、アプリケーション予約語もあるので、変数の命名には気をつけなければなりません。変数名の先頭に冠詞を付ける (aSt / theSt) スタイルを採っている人が多いです。


冠詞を付けるスタイルは私的にはちょっと受け入れられないのですが...、試してみてはどうでしょうか。


2024/12/16 16:12 T22T への返信

たしかにそのページに st という予約語はありませんね.ですけども、公式の文書もなかなかあてにならないもので、anything やら vector といったそこに載っていないワードも予約語になっていたりします.以下の文も、ちゃんとコンパイルが通りますし、実行もできます.まあ、結果についてはあまり気にしないでください.あくまで載っていない予約語うんぬんの文脈からの引用なので.

"GHH" as anything
"GB" as vector

とはいえ st くらいの短い名前の変数は今までよく使っているはずですし、これまでずっとこんなふうにエラーとなっていたのかというのは甚だ疑問です.スクリプトエディタに関しては未だにバグだらけで辟易しているくらいですが、もし今回のこれがバグだというのなら、本当に使うのが嫌になるレベルのバグだと思います.直す気がないのだろうなぁという落胆の気持ちもありますが、正直、開発するというのならちゃんとやってほしいという思いです.

2024/12/23 22:23 Hiro__S への返信

>予約語だからこうなるんじゃないかなと。

逆に、予約語でないならそうはならないだろう、ということですか.何にせよ、提示いただいたそれらも変数名として使えないとわかったことは収穫です、かね.

一応謎は解けたので、解決とさせていただきます.ありがとうごさいました.

このスレッドはシステム、またはAppleコミュニティチームによってロックされました。 問題解決の参考になる情報であれば、どの投稿にでも投票いただけます。またコミュニティで他の回答を検索することもできます。

AppleScriptで知らない予約語に遭遇?

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。