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
我对applecript很新,很抱歉这个愚蠢的问题,但是很难找到答案,也许其他人遇到了这个问题。
我试过测试以确保(虽然我无法想象为什么它不会)变量是一个字符串,但我很确定我的方法来测试变量变量的类型不是真的很有效。
答案 0 :(得分: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正在修复代码中的错误。它将theThisTruth强制转换为字符串,然后显示它。
这就是为什么当您在重复循环中使用“显示对话框x”时,它会显示正确的单词。它将“引用x”强制转换为字符串,然后显示它。
注意:我解释参考文献的方式是我如何看待它们。它并不完全正常,但我更容易以这种方式思考它们,结果是一样的。如果您想了解更多相关信息here's a link。