คุณมีเคล็ดลับอะไรสำหรับการเล่นกอล์ฟใน Applescript ฉันกำลังมองหาแนวคิดที่สามารถนำไปใช้กับปัญหารหัสกอล์ฟโดยทั่วไปซึ่งอย่างน้อยค่อนข้างเฉพาะ Applescript (เช่น "ลบความคิดเห็น" ไม่ใช่คำตอบ)
คุณมีเคล็ดลับอะไรสำหรับการเล่นกอล์ฟใน Applescript ฉันกำลังมองหาแนวคิดที่สามารถนำไปใช้กับปัญหารหัสกอล์ฟโดยทั่วไปซึ่งอย่างน้อยค่อนข้างเฉพาะ Applescript (เช่น "ลบความคิดเห็น" ไม่ใช่คำตอบ)
คำตอบ:
of
ผู้ประกอบการจะใช้ในการได้รับทรัพย์สินจากวัตถุ:
log words of "Hello World"
แต่ในหลายกรณีคุณสามารถใช้'s
เป็นทางลัดเพื่อบันทึก 1 ตัวอักษร:
log "Hello World"'s words
Applescript Editor เป็น IDE ตัวเล็กที่มีประโยชน์ซึ่งเน้นไวยากรณ์และทำให้โค้ดของคุณสวยงาม อย่างไรก็ตามสำหรับวัตถุประสงค์ของการเล่นกอล์ฟมันเป็นการต่อต้านเนื่องจากเป็นการเพิ่มการเยื้องและคำหลักที่ฟุ่มเฟือยเช่นหลังจากend
คำสั่ง ตัวอย่างเช่น:
repeat with w in "Hello World"'s words
log w
end
กลายเป็นสิ่งต่อไปนี้เมื่อวางลงใน Applescript Editor และรวบรวม / รัน:
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
ที่ตัวเองเป็น
คำบางคำมีความหมายสั้นกว่า ตัวอย่างเช่นapplication
สามารถเขียนเป็นapp
* และstring
สามารถเขียนเป็นtext
สามารถเขียนเป็น
นอกจากนี้ยังevery <noun>
สามารถเขียนเป็นพหูพจน์เช่นเดียวกับในcharacters of "hello world"
(หรือ"foo"'s characters
)
* แม้ว่าคอมไพเลอร์ของ Script Editor จะเปลี่ยนกลับไป
สำหรับการดำเนินการใด ๆ ที่ต้องมีการเสนอราคาเพื่อทำบางสิ่งเช่น
เข้าสู่ระบบ "Hello World!"
คุณสามารถร่น
เข้าสู่ระบบ "Hello World!"
ในลูปซ้ำหนึ่งสามารถลบคำว่า "ครั้ง" ทั้งหมด
ทำซ้ำ 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
's
อยู่ที่อยู่ในคำตอบนี้codegolf.stackexchange.com/a/37643/11259 ดีที่จะรู้เกี่ยวกับlog"
ว่า
คล้ายกับโพสต์เกี่ยวกับใบเสนอราคาฉันรู้ในภายหลังว่าคุณสามารถย่อสิ่งต่าง ๆ เช่นนี้ได้:
ถ้า "a" = อักขระ 1 จาก (x เป็นสตริง) ให้ส่งคืน {true, true}
ถึง
ถ้า "a" = อักขระ 1 จาก (x เป็นสตริง) ให้ส่งคืน {true, true}
มันจะเว้นวรรควงเล็บให้คุณด้วย ในตัวอย่างนี้ฉันบันทึก 5 ไบต์
ในคำถามที่ต้องมีการพิจารณาตัวพิมพ์เล็กและตัวพิมพ์ใหญ่อาจเป็นเรื่องยากที่จะจัดการกับกรณีและปัญหา
พิจารณากรณี (สิ่งที่ต้องทำกับสิ่งที่เล็กและใหญ่) สิ้นสุดการพิจารณา
ฉันไม่รู้คำหลักนี้จริง ๆ จนกระทั่งฉันต้องการมันจริงๆ การใช้เคล็ดลับอื่น ๆ ในหน้าเคล็ดลับนี้เราสามารถลดสิ่งต่อไปนี้เป็น:
พิจารณากรณี (สิ่งที่ต้องทำกับสิ่งที่เล็กและใหญ่) ปลาย
มันต้องมีคำสั่งเต็มรูปแบบเท่าที่ฉันรู้ (ฉันลองหลายอย่างแล้ว) ดูหน้านี้สำหรับรายละเอียดเพิ่มเติม
ในบางกรณีที่พิเศษ«วงเล็บมุมคู่»หรือ«เครื่องหมายบั้งคู่»อาจสั้นกว่าชื่อภาษาอังกฤษของคำสั่งพารามิเตอร์หรือค่าคงที่
รูปแบบที่เข้ารหัสด้วยเครื่องหมายบั้งจะทำให้ AppleScript ย่อขนาดเพื่อลบคลิปบอร์ดจาก 20 ถึง 16 ตัวอักษร:
set the clipboard to -- 20
«event JonspClp» -- 16
มันจะลดลง 2 ตัวอักษรเมื่อดึงข้อความจากกล่องโต้ตอบ (ตามที่เกิดขึ้นในเครื่องเมตรอนอมและวัน Pi ):
(display dialog""default answer"")'s text returned -- 46
(display dialog""default answer"")'s«class ttxt» -- 44
(คุณอาจต้องการหลีกเลี่ยงการโต้ตอบและใช้อาร์กิวเมนต์บรรทัดคำสั่งของosascript (1)หากคุณมีอย่างน้อย Mac OS X 10.4)
ด้วยคีย์บอร์ดของสหรัฐอเมริกา«คือตัวเลือก - \ และ»คือตัวเลือก - กะ - \ คำสั่ง«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-magic หรือ 8-magic ฉันพบรหัสบางส่วนโดยบันทึกไฟล์สคริปต์จากตัวแก้ไขสคริปต์จากนั้นเปิดในตัวแก้ไขฐานสิบหก ฉันวิ่งในขั้วและใช้emacs
M-x hexl-find-file
ผมพบและแก้ไขรหัสบางอย่างเช่นJonspClp
เข้าJanspClp
และออกเป็นttxt
atxt
ฉันบันทึกไฟล์และเปิดใหม่ใน Script Editor «event JanspClp»
และ«class atxt»
ปรากฏในสคริปต์
เอกสารชื่อAppleScript Terminology และการอ้างอิงรหัสเหตุการณ์ของ Appleแสดงรายการรหัสบางอย่าง ฉันพบสำเนาของมันที่https://applescriptlibrary.wordpress.com/
ตัวแก้ไขสคริปต์จะแปลวงเล็บเหลี่ยมเป็นภาษาอังกฤษก่อนบันทึกสคริปต์ของคุณ สำหรับการแสดงเครื่องหมายบั้งคุณต้องเขียนสคริปต์ของคุณในโปรแกรมแก้ไขข้อความอื่นเช่น TextEdit บันทึกสคริปต์เป็นไฟล์ข้อความธรรมดาในการเข้ารหัส Mac OS Roman (หรือ MacRoman) Mac OS X ต้องการให้คุณตั้งชื่อไฟล์ด้วยส่วนต่อท้าย. applescript
หากคุณนับจำนวนไบต์ MacRoman จะมี 1 ไบต์ต่อตัวอักษรดังนั้น«หรือ»แต่ละตัวจะนับเป็น 1 ไบต์