0
set randomString to "this is a random string"

何らかの理由で

set firstWord to the first word of randomString
set isThereTruth to firstWord = "this" 
display dialog isThereTruth

true を返しますが、

repeat with x in words of randomString
     display dialog x
     set isThisTruth to x = "this"
     display dialog isThisTruth
end repeat

false を返します

私はアップルスクリプトにかなり慣れていないので、ばかげた質問で申し訳ありませんが、答えを探すのが難しく、他の誰かがこの問題に遭遇した可能性があります.

変数が文字列であることを確認するためにテストを試みましたが (理由は想像できませんが)、変数が文字列である理由をテストする方法は実際には機能しません。

4

1 に答える 1

0

あなたが持っているように繰り返しループを構築すると、 x は単語への参照にすぎません (メモリポインターのようなもの)。また、メモリ内の x の場所へのポインターである「x への参照」は、「this」と等しくありません。参照から実際の単語を取得するには、その「内容」を取得する必要があります。それを使用すると、これは期待どおりに機能します...

repeat with x in words of randomString
    display dialog (contents of x)
    set isThisTruth to (contents of x = "this")
    display dialog isThisTruth as text
end repeat

最初に実際の値を取得できるように繰り返しループを作成する別の方法は次のとおりです。したがって、どちらでも機能します。

repeat with i from 1 to count of words of randomString
    set x to item i of (words of randomString)
    display dialog x
    set isThisTruth to x = "this"
    display dialog isThisTruth as text
end repeat

「表示ダイアログ」は文字列のみを表示することに注意してください。ブール値、数値などは表示できません。文字列のみです。そのため、applescript は、「ダイアログ isThisTruth を表示する」ときにコード内のエラーを修正しています。isThisTruth を文字列に強制してから表示しています。

そのため、繰り返しループで「display dialog x」を使用すると、正しい単語が表示されます。「xへの参照」を文字列に強制してから表示しています。

注: 参考文献について説明した方法は、参考文献についての考え方です。正確にはそのようには機能しませんが、このように考える方が簡単で、結果は同じです. それらについて詳しく知りたい場合は、ここにリンクがあります。

于 2013-02-10T11:27:03.867 に答える