सबसे पहले: .say
करता है नहीं , आप पहचान की मूल्य दे क्योंकि वह कहता .gist
दी अभिव्यक्ति पर विधि। पहचान मूल्य के लिए, आपको .WHICH
विधि को कॉल करने की आवश्यकता है । सौभाग्य से, Block.gist
विधि करता है इसकी stringification में पहचान मूल्य शामिल हैं। लेकिन यह सभी वस्तुओं के मामले में होने की गारंटी नहीं है ।
आप वहां जो देख रहे हैं, वह काम पर स्टेटिक ऑप्टिमाइज़र है: क्योंकि ब्लॉक के अंदर कुछ भी नहीं हो रहा है, इसे खारिज किया जा सकता है। एक मामले में जहां यह अलग है (जहां एक वैकल्पिक हस्ताक्षर निर्दिष्ट) में, यह है अलग। आप के साथ इस स्क्रिप्ट को चलाने, तो --optimize=0
या --optimize=1
तो सभी ब्लॉक होगा अलग पहचान मान हैं।
मुझे लगता है कि आप इसे एक ऐसा मुद्दा कह सकते हैं जो उल्लेख &?BLOCK
करता है कि स्कोटलैस को स्थिर करने से स्टैटिक ऑप्टिमाइज़र को बाधित नहीं किया जाता है। दूसरी ओर, आप इसे DIHWIDT (डॉक्टर, इट हर्ट्स व्हेन आई डू डू) का मामला भी कह सकते हैं। तो ऐसा मत करो :-)
अद्यतन: यह अलग हस्ताक्षर है कि अंतर बना दिया है। डैनियल मीता ++