Applescript: स्ट्रिंग के लिए चर की तुलना विफल हो रही है


11

मेरे पास एक एपस्क्रिप्ट है जो वस्तुओं की एक सूची प्राप्त करता है और फिर उन पर पुनरावृत्ति करता है:

tell application "GeekTool Helper"
    set names to name of geeklets

    repeat with currentName in names
        if (currentName is equal to "Top_CPU_Processes") then
            display dialog "found it"
        end if
        return currentName
    end repeat
end tell

namesचर ठीक से तार की एक सरणी के लिए सेट हो जाता है। जब मैं सूची पर दोहराता हूं तो मैं प्रत्येक currentNameचर को बिना किसी समस्या के अलग से वापस लाने में सक्षम हूं ।

समस्या है कि मैं में चल रहा हूँ अगर बयान है। मुझे संवाद बॉक्स कभी नहीं मिल रहा है जो "यह पाया गया" प्रदर्शित करता है।

मैंने तुलना के रूप if (currentName = "Top_CPU_Processes") thenमें अच्छी तरह से कोशिश की है और यह अभी भी सच के रूप में मूल्यांकन नहीं करता है।

क्या कुछ ऐसा है जो मुझे स्ट्रिंग के खिलाफ चर मूल्यांकन की सामग्री के लिए करने की आवश्यकता है?

जवाबों:


10

जब आपके पास चर की एक सूची / सरणी होती है और आप उन पर पुनरावृत्ति (पुनरावृत्ति) करते हैं, तो आपको प्रत्येक आइटम का संदर्भ मिल रहा है - जैसे "नामों का आइटम 1"। दूसरे शब्दों में, आपको सीधे मान नहीं मिलता है, आपको सरणी में आइटम के लिए एक संकेतक मिलता है। आपको इसकी तुलना करने के लिए इसके वास्तविक मूल्य के लिए आइटम संदर्भ को ज़ब्त करना होगा।

कोशिश करें: यदि ((स्ट्रिंग के रूप में वर्तमान नाम) "Top_CPU_Processes) के बराबर है तो

इसके अलावा, यदि आप स्क्रिप्ट डीबगर का उपयोग कर रहे हैं, तो यह देखना बहुत आसान है कि स्क्रिप्ट के साथ क्या होता है, इसमें एप्सस्क्रिप्ट संपादक की तुलना में बहुत बेहतर डिबग क्षमता है।


बहुत बढ़िया, यह इंगित करने के लिए धन्यवाद। इसके अलावा, अच्छी बात फिर से: रिटर्न पैनल बनाम डिस्प्ले डायलॉग का उपयोग करना। मैं ज्यादातर ऐसा कर रहा था क्योंकि मुझे लगा कि मैं गलत तरीके से परिणाम पैनल पर प्रिंट कर रहा हूं return "found it"क्योंकि यह कभी नहीं छपा। मैं वापस आऊंगा return
क्रिस श्मिट

इसके अलावा, संदर्भ को जबरदस्ती करने के बजाय, आप इसे केवल अनुमेय कर सकते हैं (इसकी contentsसंपत्ति के लिए पूछें ): contents of currentName is equal to …ASLG को देखें referenceया a reference to
क्रिस जॉन्सन

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