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

返回假

我对applescript很陌生,很抱歉这个愚蠢的问题,但是很难找到答案,也许其他人也遇到了这个问题。

我尝试测试以确保(尽管我无法想象为什么它不会是)该变量是一个字符串,但我很确定我测试变量类型的方法为什么不能真正起作用。

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

请注意,“显示对话框”仅显示字符串。它不能显示布尔值、数字等。只能显示字符串。因此,当您“显示对话框 isThisTruth”时,applescript 正在修复代码中的错误。它将 isThisTruth 强制为一个字符串,然后显示它。

这就是为什么当您在重复循环中使用“显示对话框 x”时,它会显示正确的单词。它将“对 x 的引用”强制转换为字符串,然后显示它。

注意:我解释引用的方式是我对它们的看法。它并不完全那样工作,但我更容易以这种方式思考它们,结果是一样的。如果您想了解更多关于它们的信息,请点击此处的链接

于 2013-02-10T11:27:03.867 回答