2010-12-02 24 views
7

में एक मापा मूल्य एक मापा मूल्य का (आमतौर पर गैर नकारात्मक) होते हैं फ्लोटिंग प्वाइंट नंबर और इकाई के- उपाय को लागू करने। मुद्दा वास्तविक दुनिया की मात्रा, और नियमों को नियंत्रित करने वाले नियमों का प्रतिनिधित्व करना है। यहाँ एक उदाहरण है:स्काला

scala> val oneinch = Measure(1.0, INCH) 
oneinch : Measure[INCH] = Measure(1.0) 
scala> val twoinch = Measure(2.0, INCH) 
twoinch : Measure[INCH] = Measure(2.0) 
scala> val onecm = Measure(1.0, CM) 
onecm : Measure[CM] = Measure(1.0) 
scala> oneinch + twoinch 
res1: Measure[INCH] = Measure(3.0) 
scala> oneinch + onecm 
res2: Measure[INCH] = Measure(1.787401575) 
scala> onecm * onecm 
res3: Measure[CMSQ] = Measure(1.0) 
scala> onecm * oneinch 
res4: Measure[CMSQ] = Measure(2.54) 
scala> oncem * Measure(1.0, LITER) 
console>:7: error: conformance mismatch 
scala> oneinch * 2 == twoinch 
res5: Boolean = true 

इससे पहले कि आप भी उत्साहित हो, मैं इस लागू नहीं किया है, मैं सिर्फ एक आरईपीएल सत्र dummied। मुझे सिंटैक्स के बारे में भी यकीन नहीं है, मैं सिर्फ मापित मात्रा (मिश्रित इकाइयों के साथ) जोड़ने, मापित मात्राओं को गुणा करने, और आदर्श रूप से चीजों को संभालने में सक्षम होना चाहता हूं, और मुझे स्कैला के व्यंग्य प्रकार-प्रणाली की गारंटी के लिए पसंद है संकलन समय पर अभिव्यक्ति समझ में आता है।

मेरे सवालों का:

  1. इस समस्या के लिए मौजूदा शब्दावली है?
  2. क्या यह पहले ही स्कैला में किया जा चुका है?
  3. यदि नहीं, तो मैं "लंबाई" और "मीटर में मापा लंबाई" जैसी अवधारणाओं का प्रतिनिधित्व कैसे करूं?
  4. क्या यह किसी अन्य भाषा में किया गया है?

A $330-million Mars probe खो गया क्योंकि ठेकेदार गज और पाउंड का उपयोग कर रहा था और नासा मीटर और न्यूटन का उपयोग कर रहा था। एक माप पुस्तकालय दुर्घटना को रोका होगा।

+2

लंबाई और मात्रा को गुणा करते समय आपको अनुरूपता मेल नहीं मिलती है? यह 'एम^4' में सिर्फ एक इकाई क्यों नहीं है? –

+0

अच्छी पकड़ ऑक्सबो। हो सकता है कि वह वहां एक प्लस या माइनस साइन का उपयोग करने के लिए था? – I82Much

+0

नहीं, मैं सिर्फ असंगतता के उदाहरण के लिए समझ रहा था। मुझे लगता है कि एम^4 सैद्धांतिक रूप से उचित है, हालांकि इसके लिए कोई उपयोग आसानी से दिमाग में आता है। जैसा कि I82much ने बताया, मात्रा से लंबाई घटाना एक बेहतर उदाहरण होगा। – Malvolio

उत्तर

5

खैर, यह कार्यक्षमता जावा में मौजूद है, जिसका अर्थ है आप स्काला में सीधे उपयोग कर सकते हैं।

jsr-275, जो google code ले जाया गया था। jscience spec लागू करता है। यहां एक अच्छा introduction है। यदि आप एक बेहतर इंटरफ़ेस चाहते हैं, तो मैं इसे आधार के रूप में उपयोग करता हूं और इसके चारों ओर एक रैपर का निर्माण करता हूं।

+0

में काम नहीं किया, धन्यवाद, यह वही है जो मैं ढूंढ रहा था।और यह देखते हुए कि मैंने सही शब्दावली के बहुत करीब अनुमान लगाया है, मुझे एलएमजीटीएफआई लिंक देने के लिए भी धन्यवाद। – Malvolio

+0

बढ़िया, खुश मैं कुछ मदद कर सकता था। – I82Much

11

एफ # इसके लिए समर्थन हासिल है, एक परिचय के लिए उदाहरण this link के लिए देखते हैं। यूनिट्स पर स्कैला में कुछ काम किया गया है, उदाहरण के लिए here और herethis blog post में वर्णित अनुसार एक स्कैला कंपाइलर प्लगइन भी है। मैंने संक्षेप में इसे स्थापित करने का प्रयास किया, लेकिन स्कैला 2.8.1 का उपयोग करके, जब मैंने आरईपीएल शुरू किया, तो मुझे अपवाद मिला, इसलिए मुझे यकीन नहीं है कि इस प्लगइन को इस समय सक्रिय रूप से बनाए रखा गया है या नहीं।

+1

यह नहीं है। (बनाए रखा गया।) – extempore

+0

मैंने स्कैला इकाइयों प्लगइन की कोशिश की और यह 2.9 या तो –

5

आपका प्रश्न पूरी तरह से एक शब्द के साथ उत्तर दिया गया है। आप मुझे बाद में धन्यवाद कर सकते हैं।

फ़्रिनक। http://futureboy.us/frinkdocs/

1

एफवाईआई, मैंने शारीरिक इकाइयों का प्रतिनिधित्व करने के लिए स्कैला में एक स्केलर वर्ग विकसित किया है। मैं वर्तमान में अपने आर & डी के लिए यातायात नियंत्रण में काम कर रहा हूं, और यह मेरे लिए अच्छा काम कर रहा है। यह संकलन समय पर इकाई स्थिरता की जांच नहीं करता है, लेकिन यह रन टाइम पर जांचता है। आवेदन के परीक्षण के बाद दक्षता के लिए बुनियादी संख्यात्मक प्रकारों के साथ आसानी से इसे प्रतिस्थापित करने के लिए मेरे पास एक अनूठी योजना है।

Summary-- एक स्काला वर्ग शारीरिक scalars प्रतिनिधित्व करने के लिए और अंतर्निहित शारीरिक शामिल त्रुटियों को खत्म करने के लिए बनाया गया था: आप कोड और

http://russp.us/scalar-scala.htm

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

+0

अच्छा लग रहा है, लेकिन गतिशील जांच वास्तव में वह नहीं है जिसे आप चाहते हैं। – Raphael

+0

हाँ, रन-टाइम प्रकार की जांच के साथ एटीसी सॉफ्टवेयर? मैं अब हेडलाइंस देख सकता हूं: "फ्लाइट 34 मीटर/यार्ड रूपांतरण द्वारा कम किया गया" ... – Malvolio

+0

हाँ, रन-टाइम प्रकार की जांच के साथ एटीसी सॉफ्टवेयर? मैं अब हेडलाइंस देख सकता हूं: "फ्लाइट 34 मीटर/यार्ड रूपांतरण द्वारा कम किया गया"। –

0

"हाँ, एटीसी सॉफ़्टवेयर रन-टाइम प्रकार की जांच के साथ? मैं अब शीर्षक देख सकता हूं:" उड़ान 34 मीटर/यार्ड रूपांतरण द्वारा कम किया गया "।"

क्षमा करें, लेकिन आप नहीं जानते कि आप किस बारे में बात कर रहे हैं। एटीसी सॉफ़्टवेयर का परीक्षण वर्षों के लिए तैनात होने से पहले किया जाता है। यूनिट असंगतता त्रुटियों को पकड़ने के लिए पर्याप्त समय है।

अधिक महत्वपूर्ण बात यह है कि मीटर/यार्ड रूपांतरण यहां भी एक मुद्दा नहीं हैं। इस प्रकार की त्रुटियों को स्वचालित रूप से मेरे स्केलर वर्ग का उपयोग करके संभाला जाता है। उन त्रुटियों के लिए, आपको न तो स्थैतिक और न ही गतिशील जांच की आवश्यकता है। स्थैतिक बनाम गतिशील जांच का मुद्दा केवल समय पर जोड़ने में इकाई विसंगतियों के लिए आता है। इस प्रकार की त्रुटियां कम आम हैं और आम तौर पर पहले परीक्षण चलाने पर गतिशील जांच के साथ पकड़ी जाती हैं।

वैसे, यहां इंटरफ़ेस भयानक है।

+2

कुछ प्रतिष्ठा अंक प्राप्त करने के बाद इंटरफ़ेस बेहतर होगा और सिस्टम आपको भरोसा दिलाता है। आप उन उत्तरों को पोस्ट करके ऐसा कर सकते हैं जो वास्तव में पूछे जाने वाले प्रश्न को संबोधित करते हैं। यहां अधिक जानकारी: http://stackoverflow.com/faq –

+0

@Robert - Russ StackExchange सॉफ़्टवेयर में एक विशिष्ट बग का शिकार था: * उत्तर * लिखते समय, एंटर कुंजी टेक्स्ट में एक नई पंक्ति डालने का कारण बनती है ; * टिप्पणी * लिखते समय, यह वास्तव में टिप्पणी सबमिट करता है। – Malvolio

+0

मुझे निश्चित रूप से एटीसी सॉफ़्टवेयर के बारे में कुछ नहीं पता है, लेकिन मुझे सामान्य रूप से सॉफ़्टवेयर के बारे में एक या दो चीज़ पता है, और मुझे पता है कि परीक्षण कोई पैनसिया नहीं है। एक प्रणाली के उदाहरण के लिए मेरा मूल प्रश्न देखें, जिसे "तैनात किए जाने से पहले * वर्षों * के लिए परीक्षण किया गया था" फिर भी एक बग है जिसके परिणामस्वरूप पोत और मिशन का नुकसान हुआ। भले ही यह प्रभावी हो, परीक्षण के अपने आप में बड़ी समस्याएं हैं। एफएए दशकों से संघर्ष कर रहा है ताकि 40 साल की होस्ट सिस्टम को केवल थोड़ी-थोड़ी पुरानी ईआरएएम प्रणाली के साथ बदल दिया जा सके और इसकी शीर्ष 10 समस्याओं में परीक्षण हो रहा है। – Malvolio

1

मुझे अपनी पिछली पोस्ट को स्पष्ट करने दें। मुझे यह कहना चाहिए था, "इस तरह की त्रुटियों [" मीटर/यार्ड रूपांतरण त्रुटियों "] को स्वचालित रूप से मेरे स्केलर वर्ग का उपयोग करके (स्वचालित रूप से" संभाला नहीं जाता ") स्वचालित रूप से किया जाता है। सभी यूनिट रूपांतरण स्वचालित रूप से किए जाते हैं। यह आसान हिस्सा है।

कठिन हिस्सा यूनिट असंगतताओं की जांच है, जैसे एक वेग को लंबाई जोड़ना। यह वह जगह है जहां गतिशील बनाम स्थैतिक प्रकार की जांच का मुद्दा आता है। मैं मानता हूं कि स्थैतिक जांच आम तौर पर बेहतर होती है, लेकिन केवल तभी हो सकती है प्रयोज्यता और सुविधा बलिदान के बिना किया गया।

मैंने इकाइयों की स्थैतिक जांच के लिए कम से कम दो "परियोजनाएं" देखी हैं, लेकिन मैंने कभी भी असली काम के लिए उनका उपयोग करने वाले किसी के बारे में कभी नहीं सुना है। अगर कोई ऐसे मामले के बारे में जानता है जहां उनका उपयोग किया गया था , कृपया मुझे बताएं। जब तक आप वास्तविक काम के लिए सॉफ्टवेयर का उपयोग नहीं करते हैं, यो आप नहीं जानते कि किस तरह के मुद्दे आएंगे।

जैसा कि मैंने ऊपर लिखा है, मैं वर्तमान में एटीसी में अपने आर & डी काम के लिए अपने स्केलर क्लास (http://russp.us/scalar-scala.htm) का उपयोग कर रहा हूं। मुझे उपयोगिता और सुविधा के रास्ते में कई बदलाव करना पड़ता है, लेकिन यह मेरे लिए अच्छा काम कर रहा है। अगर एक सिद्ध व्यक्ति के साथ आता है तो मैं एक स्थिर इकाइयों के कार्यान्वयन पर विचार करने के इच्छुक हूं, लेकिन अब मुझे लगता है कि मेरे पास ऐसी चीज के मूल्य का 99% अनिवार्य है। अरे, वैज्ञानिकों और इंजीनियरों का विशाल बहुमत सिर्फ "डबल्स" का उपयोग करता है, इसलिए मुझे कुछ ढीला कर दें!

+0

हैलो रसेल, ये "पोस्ट" नहीं हैं लेकिन वास्तव में प्रश्न के उत्तर हैं। इन्हें वोट दिया गया ताकि अच्छे जवाब शीर्ष पर बबल हो जाएं। यदि आप अपने पिछले उत्तर को स्पष्ट करना चाहते हैं, तो आप इसके बजाय इसे संपादित करना चाहेंगे, लेकिन यह देखते हुए कि इस उत्तर में अधिक वोट हैं, मैं सुझाव देता हूं कि इन परिवर्तनों को इस में जोड़ना ताकि आप अंक न खोएं। एक साथ ले लिया, आपके पास बहुत अच्छा जवाब है! स्टैक ओवरफ्लो सामान्य फ़ोरम की तरह नहीं है। आप faq पर एक नज़र डालना चाहेंगे: http://stackoverflow.com/faq –