मैं एल्म 0.15 से 0.16 तक लाइब्रेरी माइग्रेट करने का प्रयास कर रहा हूं। रिकॉर्ड एक्सटेंशन तंत्र हटा दिया गया है।एल्म रिकॉर्ड एक्सटेंशन के लिए वैकल्पिक
My library शरीर पर भौतिकी गणना (रिकॉर्ड के रूप में प्रतिनिधित्व) प्रदान करता है, और रिकॉर्ड एक्सटेंशन का उपयोग करता है ताकि उपयोगकर्ता शरीर के बारे में लेबल और अन्य मेटाडेटा जोड़ सकें।
मेरे example code शो उनके निर्माण के बाद सभी निकायों के लिए लेबल जोड़कर इस प्रयोग:
main = Signal.map scene (run labeledBodies tick)
किस तरह की:
labeledBodies = map (\b -> { b | label = bodyLabel b.restitution b.inverseMass }) someBodies
लेबल शरीर भी पुस्तकालय के लिए पारित हो जाता है की यह सूची काम करता है:पैरामीटर को Body
में हार्डकोडिंग इस तरह:
type alias Body a = {
pos: Vec2, -- reference position (center)
velocity: Vec2, -- direction and speed
inverseMass: Float, -- we usually use only inverse mass for calculations
restitution: Float, -- bounciness factor
shape: Shape,
meta: a
}
लेकिन यह एपीआई को अधिक बेकार बनाता है क्योंकि यह सहायक पैरामीटर को अतिरिक्त पैरामीटर लेने के लिए मजबूर करता है। क्या इस बदलाव से निपटने के लिए एक और शानदार तरीका है?
क्या रिकॉर्डिंग के लिए रिकॉर्ड पर वास्तव में आवश्यक लेबल है? क्या आप 'रन' फ़ंक्शन के अंदर से 'bodyLabel' को कॉल कर सकते हैं? –
इस मामले में, हाँ (लेकिन यह हर बार यह अतिरिक्त काम करेगा), लेकिन सामान्य मामले में, नहीं: मैं अन्य मेटाडेटा को ट्रैक करने में सक्षम होना चाहता हूं जो शरीर पर निर्भर नहीं है (जैसे हिट पॉइंट्स, अद्वितीय आईडी, जो भी हो) –