Applescript 에 해당의"계속"?
-
06-07-2019 - |
문제
나는 단순한'반복'에 AppleScript,고 싶으면 이동하는 다음 항목에"반복"조건에 따라.기본적으로 찾고 있어요 무언가를 위해하고"계속"(또는 휴식?) 다른 언어로도 제공됩니다.
나는 정통하지 않 AppleScript 그러나 나는 그것을 발견 유용한 몇 가지 있습니다.
해결책
이 정확한 문제를 검색 한 후, 나는 이것을 발견했다 책 추출물 온라인. 그것은 현재 반복을 건너 뛰고 다음 반복으로 바로 점프하는 방법에 대한 질문에 정확하게 답변합니다. repeat
고리.
사과 스크립트가 있습니다 exit repeat
, 이는 루프를 완전히 끝내고 남은 반복을 모두 건너 뜁니다. 이것은 무한 루프에서 유용 할 수 있지만이 경우 우리가 원하는 것은 아닙니다.
분명히 a continue
-AppleScript에는 같은 기능이 존재하지 않지만 여기에 시뮬레이션하는 요령이 있습니다.
set aList to {"1", "2", "3", "4", "5"}
repeat with anItem in aList -- # actual loop
repeat 1 times -- # fake loop
set value to item 1 of anItem
if value = "3" then exit repeat -- # simulated `continue`
display dialog value
end repeat
end repeat
이것은 1, 2, 4 및 5에 대한 대화 상자를 표시합니다.
여기에서 두 개의 루프를 만들었습니다. 외부 루프는 실제 루프, 내부 루프는 한 번만 반복되는 루프입니다. 그만큼 exit repeat
외부 루프를 계속하면서 내부 루프를 종료합니다. 정확히 우리가 원하는 것!
분명히, 당신이 이것을 사용하면, 당신은 정상을 할 수있는 능력을 잃게됩니다. exit repeat
.
다른 팁
set aList to {"1", "2", "3", "4", "5"}
repeat with anItem in aList -- # actual loop
try
set value to item 1 of anItem
if value = "3" then error 0 -- # simulated `continue`
log value
end try
end repeat
이것은 여전히"exit"반복 possibillity
set aList to {"1", "2", "3", "4", "5"}
repeat with anItem in aList -- # actual loop
try -- # needed to simulate continue
set value to item 1 of anItem
if value = "3" then continueRepeat -- # simulated `continue` throws an error to exit the try block
log value
on error e
if e does not contain "continueRepeat" then error e -- # Keeps error throwing intact
end try
end repeat
위의 시도 블록 기반 접근법을 기반으로하지만 약간 더 잘 읽습니다. 물론, ContinuEREPEAT는 정의되지 않기 때문에 오류가 발생하여 나머지 시도 블록을 건너 뜁니다.
오류를 그대로 유지하려면 예상치 못한 오류가 발생하는 ON ERROR 조항이 포함되어 있습니다.
- 또는 다른 전략을 사용할 수 있습니다 : 루프를 사용하여 루프를 사용하고 다음과 같은 핸들러에서 조건부 로직을 수행하십시오.
set aList to {"1", "2", "3", "4", "5"}
repeat with anItem in aList
doConditionalWork(anItem as string)
end repeat
on doConditionalWork(value)
if value = "3" then return
display dialog value
end doConditionalWork
당신은 모두 그것을 과도하게 복잡하게하고 있습니다. 이 시도:
set aList to {"1", "2", "3", "4", "5"}
repeat with anItem in aList
set value to item 1 of anItem
if value is not "3" then log value
end repeat
조건부로만 반복하는 루프에는 "반복 기기"를 사용할 수도 있습니다.