Начинающий: повторите с циклом while и ошибками - PullRequest
1 голос
/ 19 июня 2011

Хорошо, поэтому не уверен, что 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

Кроме того, чтобы проверить, было ли введено отрицательное число, я бы просто использовал

if reps > 0
    set reps to reps as integer
    set correctEntry to true
else
    display dialog "Must be positive"

Есть ли лучший способ?Даже встроенный «положительный» вызов?

Наконец, я использую http://www.fischer -bayern.de / as / as4as / AS4AS_e.pdf в качестве учебного пособия, однако я не уверенесли это достаточно хорошоЯ думал о том, чтобы пойти в Mac OS X Developer Library, но хотел бы узнать, как это сделать.У меня немного опыта работы с Perl, так что это не обязательно для начинающего.

Обновление: Найден этот сайт: http://www.macosxautomation.com/training/applescript/intro.html

Большое спасибо за любую помощь вамможет предоставить.

Update2: код работает, если я использую ту же проверку для целого числа во втором блоке try, что не так с первым.Почему все считается целым числом?Что еще более важно, почему использование предложенного оператора if не сработало, если поместить его в мой скрипт?

1 Ответ

4 голосов
/ 19 июня 2011

Попробуйте это ...

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

Для изучения вот несколько уроков . Когда я узнал, я сделал это в разделе «Учебники для начинающих сценаристов». По мере того, как вы становитесь лучше, есть более продвинутые учебники. Наконец, вам также необходимо изучить «Руководство по языку Applescript», которое находится в меню «Справка» в редакторе AppleScript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...