हीरे की समस्या यह तय करने में असमर्थता है कि किस विधि को चुनना है। स्केला ने इसे परिभाषित करते हुए कहा कि भाषा विनिर्देशों के भाग के रूप में चुनने के लिए कौन सा कार्यान्वयन ( इस विकिपीडिया लेख में स्काला के बारे में भाग पढ़ें )।
बेशक, एक ही क्रम परिभाषा का उपयोग कक्षा के कई उत्तराधिकार में भी किया जा सकता है, इसलिए लक्षण के साथ परेशान क्यों करें?
कारण IMO कंस्ट्रक्टर है। कंस्ट्रक्टर्स की कई सीमाएँ होती हैं जो नियमित तरीके से नहीं होती हैं - उन्हें केवल एक बार प्रति ऑब्जेक्ट कहा जा सकता है, उन्हें प्रत्येक नई ऑब्जेक्ट के लिए कॉल करना होगा, और एक चाइल्ड क्लास के कंस्ट्रक्टर को इसे माता-पिता का निर्माता कहना होगा क्योंकि यह पहला निर्देश है (अधिकांश भाषाओं में) यदि आप मापदंडों को पारित करने की आवश्यकता नहीं है, तो यह आपके लिए निहित है)।
यदि B और C को A और D विरासत में मिलते हैं, तो B और C, और B और C दोनों के निर्माता A के कंस्ट्रक्टर को कॉल करते हैं, जबकि D का कंस्ट्रक्टर A के कंस्ट्रक्टर को दो बार कॉल करेगा। स्केल को चुनने के लिए कौन से कार्यान्वयन को परिभाषित करना विधियों के साथ किया गया क्योंकि यहां काम नहीं करेगा क्योंकि दोनों बी और सी के निर्माता को बुलाया जाना चाहिए।
लक्षण इस समस्या से बचते हैं क्योंकि उनके पास निर्माता नहीं हैं।