好的,所以不确定 apple.stackexchange 是否是一个更好的地方,但我需要一些有关此代码的帮助:
目标:要求用户输入循环应重复的次数。如果他们以错误的格式输入,请发送反馈
问题如果我输入一个小数,它只是把它当作一个整数并且仍然有效,我该如何防止这种情况,或者用另一种方式检查它?
set correctEntry to false --initially assume false
repeat while correctEntry is false
--Let user put how many times it loops
set textToDisplay to "How often should this repeat?"
display dialog textToDisplay default answer "2.4"
set reps to text returned of the result
--Detailed check/feedback if they input wrong
try
--Begins as string, try making it an integer
set reps to reps as integer --coercion will should only work with integer
set correctEntry to true --remember won't get here if first statement fails
on error
try
--See if string can at least be converted to a number
set reps to reps as number
display dialog "Only integers"
on error
display dialog "That wasn't a number"
end try
-- still false here
end try
end repeat
--Only gets here if correctEntry becomes true
repeat reps times
say "You entered right"
end repeat
Run Code Online (Sandbox Code Playgroud)
另外,要检查是否输入了负数,我会使用
if reps > 0
set reps to reps as integer
set correctEntry to true
else
display dialog "Must be positive"
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?即使是内置的“积极”电话?
最后,我使用http://www.fischer-bayern.de/as/as4as/AS4AS_e.pdf作为教程,但我不确定它是否足够好。我正在考虑去 Mac OS X 开发人员库,但想要一些关于学习的好方法的输入。我只有一点 Perl 经验,所以它不一定适合一个完整的初学者。
更新:找到这个网站:http : //www.macosxautomation.com/training/applescript/intro.html
非常感谢您提供的任何帮助。
Update2:如果我在第二个 try 块中对整数使用相同的检查,则代码有效,第一个有什么问题。为什么它将所有内容都视为整数?更重要的是,为什么在我的脚本中使用建议的 if 语句不起作用?
尝试这个...
repeat
set textToDisplay to "How often should this repeat?"
set reps to text returned of (display dialog textToDisplay default answer "2.4")
try
set reps to reps as number -- this makes sure no letters were entered
if (class of reps) is integer and reps is greater than 0 then
exit repeat
else
error "Only positive integers"
end if
on error theError number errorNumber
display dialog "There was an error: " & (errorNumber as text) & return & return & theError buttons {"OK"} default button 1 with icon stop
end try
end repeat
repeat reps times
say "You entered right"
end repeat
Run Code Online (Sandbox Code Playgroud)
为了学习这里的一些教程。当我学习时,我做了“脚本初学者教程”部分中的那些。随着您的进步,还有更多高级教程。最后,您还必须学习 AppleScript 编辑器中“帮助”菜单下的“Applescript 语言指南”。
| 归档时间: |
|
| 查看次数: |
3546 次 |
| 最近记录: |