एप्सस्क्रिप्ट में गोल्फ के लिए टिप्स


13

Applescript में गोल्फ के लिए आपके पास क्या सुझाव हैं? मैं उन विचारों की तलाश कर रहा हूं जो सामान्य रूप से गोल्फ समस्याओं को लागू करने के लिए लागू किए जा सकते हैं जो कम से कम कुछ हद तक एप्सस्क्रिप्ट (उदाहरण के लिए "टिप्पणियां हटाएं" एक उत्तर नहीं है)।


यह प्रश्न बहुत व्यापक है। यह संभवतः एक पूर्ण, अच्छी तरह से लिखित उत्तर (और प्रश्न भी स्पष्ट रूप से मना करता है) के साथ उत्तर नहीं दिया जा सकता है।
रेनबोल्ट

1
फिर भी, यह सिर्फ एक मजाकिया सवाल है :)
MadTux

5
सीडब्ल्यू में रूपांतरण के लिए ध्वजांकित ('एक्स में गोल्फिंग के लिए सुझाव के लिए हमारे सम्मेलन के अनुसार' प्रश्न)।
भूतपूर्व सैनिक

@ मैडटक्स हां, आमतौर पर गोल्फ की भाषाओं में एप्सस्क्रिप्ट पहली पसंद नहीं है; ;-) लेकिन ऐसे अवसर हैं , विशेष रूप से प्रतिबंधित-स्रोत श्रेणी में जहां यह थोड़ा उपयोगी हो जाता है।
डिजिटल ट्रामा

4
@Rainbolt यह कैसे एक्स सवालों में गोल्फ के लिए अन्य सुझावों के लिए प्रकृति में अलग है ?
डिजिटल ट्रॉमा

जवाबों:


6

ofऑपरेटर एक वस्तु से एक संपत्ति प्राप्त करने के लिए प्रयोग किया जाता है:

log words of "Hello World"

लेकिन कई मामलों में आप 's1 चरित्र को बचाने के लिए शॉर्टकट के रूप में उपयोग कर सकते हैं :

log "Hello World"'s words

6
यह कुछ हद तक हास्यास्पद लगता है, लेकिन कुछ हद तक भयानक भी है, कि अप्प्लीस्क्रिप्ट एपोस्ट्रोफिस को अधिकार के रूप में पेश करता है। मैं सिर्फ भाषा डिजाइनरों में से एक की कल्पना कर सकता हूं जो उस विचार को समूह में ला रहा है।
जियोबिट्स

9
@Geobits वे सामान्य रूप से Applescript का वर्णन करने के लिए महान विशेषण हैं। मैंने अभी यह तय नहीं किया है कि क्या अप्प्लीस्क्रिप्ट हास्यास्पद रूप से भयानक या अजीब तरह से हास्यास्पद है; ;-)
डिजिटल ट्रॉमा

4

Applescript एडिटर एक आसान सा आईडीई है जो आपके कोड को सिंटैक्स-हाइलाइट करता है और सुशोभित करता है। हालांकि, गोल्फिंग के प्रयोजनों के लिए, यह उल्टा है क्योंकि यह endबयानों के बाद इंडेंटेशन और शानदार कीवर्ड जोड़ता है । उदाहरण के लिए:

repeat with w in "Hello World"'s words
log w
end

जब Applescript संपादक में चिपकाया जाता है और संकलित / चलता है:

repeat with w in "Hello World"'s words
    log w
end repeat

जाहिर है कि पहली स्निपेट गोल्फिंग के उद्देश्यों के लिए बेहतर है।


IMO इसे एक सामान्य टिप के रूप में देखा जा सकता है, जो AS के लिए विशिष्ट नहीं है। कई आधुनिक आईडीई ऐसा करते हैं यदि आप उन्हें करते हैं।
17

2
@ जीबिट्स सहमत। हालाँकि, मुझे लगता है कि विशिष्ट कीवर्ड का जोड़ endकाफी हद तक विशिष्ट है।
डिजिटल ट्रॉमा

हाँ, यह सिर्फ मेरे लिए चौंकाने वाला है। खरोज / रिक्ति बात बहुत आम है, हालांकि, आदि है अनावश्यक कोष्ठक के साथ
Geobits

@Geobits एप्सस्क्रिप्ट पूरी तरह से पठनीयता के बारे में है। मुझे लगता है कि यह विचार यह स्पष्ट करने के लिए है कि कौन endसा ब्लॉक स्टेटमेंट शुरू होता है जब आपके पास कई नेस्टेड ब्लॉक होते हैं
डिजिटल ट्रॉमा

4

tell ब्लॉक सामान्य रूप से हैं:

tell application "TextEdit"
    activate
end tell

हालांकि अंतरिक्ष को बचाने के लिए निम्नलिखित बराबर है, जब tellब्लॉक के अंदर सिर्फ एक लाइन होती है:

tell application "TextEdit" to activate

3
जो खुद है tell app "TextEdit" to activate
वॉचर्जिन सेप

@Chargin हाँ। यदि आप चाहें तो इसे दूसरे उत्तर के रूप में जोड़ें।
डिजिटल ट्रॉमा

4

कुछ शब्दों के छोटे समानार्थी शब्द हैं। उदाहरण के लिए, * के applicationरूप में लिखा जा सकता है app, और के stringरूप में लिखा जा सकता है text

इसके अलावा, every <noun>केवल characters of "hello world"(या "foo"'s characters) के रूप में बहुवचन के रूप में लिखा जा सकता है ।

* हालांकि स्क्रिप्ट एडिटर का कंपाइलर इसे वापस बदल देगा।


3

उद्धरण आवश्यक ऑपरेशन

किसी भी ऑपरेशन के लिए कुछ करने के लिए एक उद्धरण की आवश्यकता होती है, अर्थात

लॉग "हैलो वर्ल्ड!"

आप छोटा कर सकते हैं

लॉग "हैलो वर्ल्ड!"

दोहरा

दोहराए गए लूप में, कोई व्यक्ति "शब्द" को पूरी तरह से हटा सकता है।

बार बार दोहराएँ
समाप्त

बनाम

दोहराएँ x
समाप्त

<= और> =

किसी भी समय इन ऑपरेटरों को बुलाया जाता है, आप उन्हें क्रमशः और , के साथ बदल सकते हैं। हालांकि यह बाइट काउंट को कम नहीं कर सकता है (जब तक कि विशेष बाइट काउंटिंग कन्वेंशन लागू नहीं होते हैं, जो मैं सुझाव देता हूं), यह कैरेक्टर काउंट को कम करता है

एसटीडीआईएन से हथियाना

आप निम्न वर्णों के साथ एसटीडीआईएन से हड़प सकते हैं:

रन arvv पर
समाप्त

जल्दी से बाहर निकलना

यदि आपको किसी कोड को जल्दी से बाहर निकालने की आवश्यकता है (जो भी कारण के लिए, अर्थात अत्यधिक ifएस को रोकना ) ...

छोड़ना

हाहा वाह, आपने इसे खोजने के लिए कुछ काम किया होगा;)
बीटा डेके

मैं इसका इस्तेमाल एक बहुत
एडिसन क्रम्प

सवाल या सुझाव?
बीटा डेके

युक्तियाँ। और सामान्य रूप से AppleScript।
एडिसन क्रम्प

ओह, मैं सवाल के बारे में बात कर रहा था :)
बीटा डेके

2

अपीलीयता पठनीयता में मदद करने के लिए कुछ अतिरिक्त कीवर्ड डालने की अनुमति देती है:

log the words of "Hello World"

लेकिन theयहाँ पूरी तरह से अतिश्योक्ति है और एक 4 चरित्र की बचत के लिए छोड़ा जा सकता है:

log words of "Hello World"

2
आपके पास और भी छोटे संस्करण हो सकते हैं: log"Hello World"'s wordsक्योंकि आपको 1) किसी भी अभिव्यक्ति और उद्धृत आइटम के बीच की जगह की आवश्यकता नहीं है, और 2) क्योंकि 'sप्रतिस्थापन के लिए उपयोग किया जा सकता है of
एडिसन क्रम्प

@VTCAKAVSMoACE हाँ, 'sइस उत्तर कोडगॉल्फ.स्टैकएक्सचेंज . com/a/37643/11259 में संबोधित किया गया है । log"हालांकि इसके बारे में जानकर अच्छा लगा ।
डिजिटल ट्रॉमा

2

ब्रैकेट छोटा करना

उद्धरणों के बारे में पोस्ट के समान, मुझे बाद में एहसास हुआ कि आप इस तरह से चीजों को छोटा कर सकते हैं:

यदि "a" = वर्ण 1 का (x स्ट्रिंग के रूप में) तो {true, true} लौटें

सेवा

यदि "a" = वर्ण 1 का (x स्ट्रिंग के रूप में) तो {true, true} लौटें

यह आपके लिए कोष्ठक को भी स्थान देगा। इस उदाहरण में, मैं 5 बाइट्स बचाता हूं।


2

मानते हुए...

ऐसे मामलों में जिनमें केस संवेदनशीलता की आवश्यकता होती है, वास्तव में मामलों से निपटना मुश्किल हो सकता है।

अब तक:

मामले पर विचार
    (मामला संवेदनशील सामान के साथ कुछ करने के लिए)
विचार करना

मुझे वास्तव में इस कीवर्ड का पता नहीं था जब तक मुझे वास्तव में इसकी आवश्यकता नहीं थी। इस टिप्स पृष्ठ में अन्य युक्तियों का उपयोग करते हुए, हम इसे नीचे घटा सकते हैं:

मामले पर विचार
(मामला संवेदनशील सामान के साथ कुछ करने के लिए)
समाप्त

जहां तक ​​मुझे पता है, इसके लिए एक पूर्ण विवरण की आवश्यकता है। (मैंने बहुत सी चीजों की कोशिश की है।) अधिक जानकारी के लिए इस पृष्ठ को देखें।


1

कुछ असाधारण मामलों में, «डबल एंगल ब्रैकेट्स» या «डबल शेव्रोन्स» कमांड, पैरामीटर, या स्थिरांक के अंग्रेजी नाम से कम हो सकते हैं।

शेवरॉन-एन्कोडेड फ़ॉर्म 20 से 16 अक्षरों के क्लिपबोर्ड को हटाने के लिए AppleScript को सिकोड़ देगा :

set the clipboard to  -- 20
«event JonspClp»      -- 16

यह 2 वर्ण छोड़ जब एक संवाद से पाठ को लाते समय (के रूप में होता है होता तालमापनी और पाई डे ):

(display dialog""default answer"")'s text returned  -- 46
(display dialog""default answer"")'s«class ttxt»    -- 44

( यदि आप कम से कम मैक ओएस एक्स 10.4 हैं, तो आप संवाद से बचने और ऑसस्क्रिप्ट (1) के कमांड-लाइन तर्कों का उपयोग करना पसंद कर सकते हैं ।)

यूएस कीबोर्ड के साथ, «ऑप्शन- \ और» ऑप्शन-शिफ्ट- \ है। एक कमांड «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-अक्षर कोड को जानना होगा। मैंने स्क्रिप्ट एडिटर से स्क्रिप्ट फाइल को सेव करके कुछ कोड पाया, फिर इसे हेक्स एडिटर में ओपन किया। मैं emacsएक टर्मिनल में भागा और इस्तेमाल किया M-x hexl-find-file। मैंने कुछ कोड ढूंढे और संपादित किए, जैसे JonspClpकि JanspClp, और ttxtमें atxt। मैंने तब फ़ाइल को सहेजा और इसे स्क्रिप्ट एडिटर में फिर से खोल दिया। «event JanspClp»और «class atxt»स्क्रिप्ट में दिखाई दिया।

AppleScript शब्दावली और Apple इवेंट कोड्स नामक एक दस्तावेज़ संदर्भ कोड को सूचीबद्ध करता है। मुझे इसकी एक प्रति https://applescriptlibrary.wordpress.com/ पर मिली।

स्क्रिप्ट एडिटर आपकी स्क्रिप्ट को सहेजने से पहले डबल एंगल ब्रैकेट को अंग्रेजी में ट्रांसलेट करेगा। शेवरॉन डिफरेंस के लिए, आपको अपनी स्क्रिप्ट किसी अन्य टेक्स्ट एडिटर में लिखनी होगी, जैसे टेक्स्टएडिट। मैक ओएस रोमन (या MacRoman) एन्कोडिंग में एक सादे पाठ फ़ाइल के रूप में स्क्रिप्ट को सहेजें। मैक ओएस एक्स पसंद करता है कि आप एक .applescript प्रत्यय के साथ फ़ाइल का नाम दें।

यदि आप बाइट्स की गणना करते हैं, तो MacRoman में प्रति वर्ण 1 बाइट है, इसलिए प्रत्येक «या» 1 बाइट के रूप में गिना जाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.