Applescript에서 골프를 즐기기위한 팁이 있습니까? 나는 일반적으로 Applescript에 다소 특정한 코드 골프 문제에 적용될 수있는 아이디어를 찾고 있습니다 (예 : "댓글 제거"는 답이 아닙니다).
Applescript에서 골프를 즐기기위한 팁이 있습니까? 나는 일반적으로 Applescript에 다소 특정한 코드 골프 문제에 적용될 수있는 아이디어를 찾고 있습니다 (예 : "댓글 제거"는 답이 아닙니다).
답변:
of
연산자는 객체의 속성을 가져 오는 데 사용됩니다 :
log words of "Hello World"
그러나 대부분의 경우 's
1 개의 문자를 저장하는 바로 가기로 사용할 수 있습니다 .
log "Hello World"'s words
Applescript Editor는 구문을 강조하고 코드를 아름답게하는 편리한 작은 IDE입니다. 그러나 골프를 목적으로하는 경우 들여 쓰기와 불필요한 키워드 (예 : after end
statement)를 추가하므로 비생산적 입니다. 예를 들면 다음과 같습니다.
repeat with w in "Hello World"'s words
log w
end
Applescript 편집기에 붙여넣고 컴파일 / 실행하면 다음과 같이됩니다.
repeat with w in "Hello World"'s words
log w
end repeat
분명히 첫 번째 스 니펫은 골프 목적으로 더 좋습니다.
end
것은 상당히 Applescript에 해당 한다고 생각합니다 .
end
여러 개의 중첩 된 블록이있을 때 어떤 블록 시작 명령문에 속 하는지 명확히하는 것이 좋습니다.
tell
블록은 Applescript에서 일반적입니다.
tell application "TextEdit"
activate
end tell
그러나 공간을 절약하기 위해 tell
블록 내부가 한 줄이면 다음과 같습니다 .
tell application "TextEdit" to activate
tell app "TextEdit" to activate
.
무언가를하기 위해 인용이 필요한 모든 작업, 즉
"Hello World!"로그
당신은 단축 할 수 있습니다
log "Hello World!"
반복 루프에서 단어 "times"를 완전히 제거 할 수 있습니다.
x 번 반복 종료
대
x를 반복 종료
이 연산자가 호출 될 때마다 각각 ≤
및로 대체 할 수 있습니다 ≥
. (특수 바이트 계산 규칙은 내가 제안하는 구현하지 않는 한)이 바이트 수를 줄이고 않을 수도 있지만, 그것은 하지 글자 수를 줄일 수 있습니다.
STDIN에서 다음 문자를 사용할 수 있습니다.
실행중인 argv 종료
어떤 이유로 든 코드를 빨리 종료 해야하는 경우 (예 : 과도한 if
s 방지 ) ...
떠나다
Applescript를 사용하면 가독성을 높이기 위해 몇 가지 추가 키워드를 삽입 할 수 있습니다.
log the words of "Hello World"
그러나 the
여기는 완전히 불필요한 것이며 4 문자 절약을 위해 생략 될 수 있습니다.
log words of "Hello World"
log"Hello World"'s words
1) 표현식과 인용 된 항목 사이에 공백이 필요하지 않고 2) 's
대신을 사용할 수 있기 때문에 변형이 더 짧을 수도 있습니다 of
.
예외적 인 경우,«이중 꺾쇠 괄호»또는«이중 쉐브론»은 명령, 매개 변수 또는 상수의 영어 이름보다 짧을 수 있습니다.
쉐브론으로 인코딩 된 형식은 AppleScript를 축소 하여 클립 보드 를 20에서 16 자로 삭제합니다 .
set the clipboard to -- 20
«event JonspClp» -- 16
대화 상자에서 텍스트를 가져올 때 메트로놈 및 Pi Day 에서 와 같이 2 문자가 삭제됩니다 .
(display dialog""default answer"")'s text returned -- 46
(display dialog""default answer"")'s«class ttxt» -- 44
( Mac OS X 10.4 이상인 경우 대화 상자를 피하고 osascript (1) 의 명령 줄 인수를 사용하는 것이 좋습니다.)
US 키보드에서«은 option- \이고»는 option-shift- \입니다. 명령 «event abcdefgh»
은 16 자입니다. 매개 변수 또는 상수 «class abcd»
는 12 자입니다.
쉐브론으로 인코딩 된 형식은 거의 항상 골프에 비해 너무 깁니다. 이중 꺾쇠 괄호가없는 예는 다음과 같습니다.
set x to open for access"output"write permission 1
write"One line of text
"to x
close access x
그들도 마찬가지입니다.
set x to«event rdwropen»"output"given«class perm»:1
«event rdwrwrit»"One line of text
"given«class refn»:x
«event rdwrclos»x
_open for access
(16)에서 «event rdwropen»
(16)으로 변경하는 것은 중립적이었습니다. write permission_
(17)에서 given«class perm»:
(18)으로 변경하면 비용이 1 자입니다. 다른 이중 앵글 브래킷은 더 비쌉니다.
이중 꺾쇠 괄호를 사용하려면 매직 4 글자 또는 8 글자 코드를 알아야합니다. 스크립트 편집기에서 스크립트 파일을 저장 한 다음 16 진 편집기에서 열어서 일부 코드를 찾았습니다. 나는 emacs
터미널에서 달렸고 사용했다 M-x hexl-find-file
. JonspClp
into JanspClp
및 ttxt
into 같은 코드를 찾아서 편집 했습니다 atxt
. 그런 다음 파일을 저장하고 스크립트 편집기에서 다시 열었습니다. «event JanspClp»
및 «class atxt»
스크립트에 출연했다.
AppleScript 용어 및 Apple 이벤트 코드 참조 문서에 일부 코드가 나열되어 있습니다. https://applescriptlibrary.wordpress.com/ 에서 사본을 찾았습니다.
스크립트 편집기는 스크립트를 저장하기 전에 이중 꺾쇠 괄호를 영어로 번역합니다. 쉐브론 지연의 경우, 텍스트 편집기와 같은 다른 텍스트 편집기에서 스크립트를 작성해야합니다. 스크립트를 Mac OS Roman (또는 MacRoman) 인코딩에서 일반 텍스트 파일로 저장하십시오. Mac OS X에서는 파일 이름을 .applescript 접미어로 지정하는 것이 좋습니다.
바이트 수를 계산하면 MacRoman은 문자 당 1 바이트를 가지므로 각«또는»는 1 바이트로 계산됩니다.