मंचों

मैक बाइनरी ऑपरेटर '>' को 'डबल?' प्रकार के ऑपरेंड पर लागू नहीं किया जा सकता है। और 'इंट'

abcdefg12345

मूल पोस्टर
10 जुलाई 2013
  • अक्टूबर 21, 2017
मैं यह जांचने की कोशिश कर रहा हूं कि स्ट्रिंग में डबल वैल्यू 10 से बड़ा है या नहीं, लेकिन मैं एक त्रुटि प्राप्त करने के लिए उत्सुक हूं 'बाइनरी ऑपरेटर'>' टाइप 'डबल' के ऑपरेंड पर लागू नहीं किया जा सकता है? और 'इंट'' किसी को भी पता है कि मैं क्या गलत कर रहा हूं।

तेज 4
कोड: |_+_|
मैं एक चर स्ट्रिंग का उपयोग कर रहा हूं क्योंकि मुझे इसे एक स्ट्रिंग होने की आवश्यकता है ताकि मैं इसे बाद में प्रारूपित कर सकूं, मैंने इसे परिभाषित किया है
कोड: |_+_|

abcdefg12345

मूल पोस्टर
10 जुलाई 2013


  • अक्टूबर 21, 2017
एक और चर जोड़कर इसे ठीक किया
कोड: |_+_|
प्रतिक्रियाएं:960डिजाइन

0002378

निलंबित
28 मई, 2017
  • अक्टूबर 23, 2017
मुझे लगता है कि स्विफ्ट, एक भाषा के रूप में, कभी-कभी काफी हंसने योग्य होती है, विशेष रूप से। जावा प्रोग्रामिंग से आ रहा है। और, आपने इसका सबसे अच्छा उदाहरण पेश किया।

और, जबकि वैकल्पिक के अपने लाभ हैं, वे मुझे डंपस्टर के शीर्ष किनारों के खिलाफ अपने कंप्यूटर को तोड़ना चाहते हैं।

हालांकि, जहां स्विफ्ट वास्तव में गधे को मारता है वह बंद होने के विभाग में है ... ओह हाँ! जावा उनके पास भी है, अभी, लेकिन ...

और, ज़ाहिर है, स्विफ्ट प्रकार और उन अजीब अर्ध-कॉलन की घोषणा में कम कठोर है ... भयानक!

प्रतिक्रियाएं:abcdefg12345

0002378

निलंबित
28 मई, 2017
  • अक्टूबर 24, 2017
ओह रुको, अब जब मैं आपके कोड पर वापस देखता हूं, तो मैं देखता हूं कि आपका डबल (स्ट्रिंग) मान डबल? का मूल्यांकन करता है, जो एक वैकल्पिक मान है।

आपको एक नए चर की आवश्यकता नहीं है। आप बस '!' जोड़ सकते हैं आपके डबल (स्ट्रिंग) पर, और यह काम करेगा।

मुझे लगता है कि इस मामले में स्विफ्ट के बेवकूफ होने के बारे में मैं गलत था। लेकिन, मुझे ऐसी कंपाइलर शिकायतों के कई मामलों का सामना करना पड़ा है (दो अलग-अलग संख्यात्मक प्रकारों की तुलना करने में असमर्थ)।

ग्रीन

जुलाई 15, 2015
फोर्ट वर्थ
  • अक्टूबर 24, 2017
मुझे लगता है कि एक क्लीनर, अधिक स्विफ्टी समाधान आपके MyValue को डबल या इंट (जो ऐसा लगता है) के रूप में स्टोर करना होगा। फिर आप स्वरूपण को संभालने के लिए NumberFormatter का उपयोग कर सकते हैं।

या आप मान को खोलने के लिए वैकल्पिक बाइंडिंग का उपयोग कर सकते हैं। मैं इन तरीकों में से एक को पहले एक बल का उपयोग करने से पहले कोशिश करूँगा

gnasher729

निलंबित
25 नवंबर, 2005
  • अक्टूबर 24, 2017
maculateConception ने कहा: मुझे लगता है कि स्विफ्ट, एक भाषा के रूप में, कभी-कभी काफी हंसने योग्य होती है, esp। जावा प्रोग्रामिंग से आ रहा है। और, आपने इसका सबसे अच्छा उदाहरण पेश किया।
यह काफी अनजान है। समस्या यह है कि ओपी स्विफ्ट की मूल विशेषता के बारे में नहीं जानता है, जो वैकल्पिक मान है। यदि स्ट्रिंग में कोई संख्या नहीं है, तो कंस्ट्रक्टर डबल (स्ट्रिंग) स्पष्ट रूप से विफल हो सकता है। यही कारण है कि डबल (स्ट्रिंग) डबल प्रकार का परिणाम नहीं दे सकता है, लेकिन डबल प्रकार का एक परिणाम नहीं दे सकता है? , यह एक वैकल्पिक डबल है। और एक वैकल्पिक डबल की तुलना इंट से नहीं की जा सकती।

आपका 'समाधान' वास्तव में, वास्तव में भयानक है। NS ! इसका अर्थ है 'मुझे यकीन है कि यह रूपांतरण सफल होगा। अगर ऐसा नहीं होता है तो कृपया ऐप को क्रैश कर दें'। चलो डी = डबल ('1234x')! बस दुर्घटनाग्रस्त हो जाएगा। जानबूझ कर। क्योंकि आपने शून्य की जांच नहीं की, और यह शून्य था।

सही तरीका त्रुटि की जाँच कर रहा है। उदाहरण के लिए

अगर डी = डबल (माईवैल्यू), डी> 10 {
// MyValue में एक संख्या है, और संख्या> 10 है।
} अन्यथा {
// MyValue में कोई संख्या नहीं थी, या संख्या थी<= 10.
}

अगर आपको लगता है कि कोड लिखना सुरक्षित है और वास्तव में काम करता है, तो स्विफ्ट सही भाषा है।
प्रतिक्रियाएं:atmenterprise और ajthom90

0002378

निलंबित
28 मई, 2017
  • अक्टूबर 24, 2017
gnasher729 ने कहा: यह काफी अनजान है। समस्या यह है कि ओपी स्विफ्ट की मूल विशेषता के बारे में नहीं जानता है, जो वैकल्पिक मान है। यदि स्ट्रिंग में कोई संख्या नहीं है, तो कंस्ट्रक्टर डबल (स्ट्रिंग) स्पष्ट रूप से विफल हो सकता है। यही कारण है कि डबल (स्ट्रिंग) डबल प्रकार का परिणाम नहीं दे सकता है, लेकिन डबल प्रकार का एक परिणाम नहीं दे सकता है? , यह एक वैकल्पिक डबल है। और एक वैकल्पिक डबल की तुलना इंट से नहीं की जा सकती।

क्या आपको स्कूल में धमकाया गया था? ऐसा लगता है कि आपका आत्म-सम्मान काफी कम है क्योंकि आप मुझ पर हमला किए बिना जवाब नहीं दे सकते।

यह आपसे मेरी पहली और आखिरी बातचीत होगी। आपको सुझाव - अधिक सभ्य तरीके से संवाद करने का प्रयास करें, और जीवन बहुत अच्छा होगा। ख्याल रखना।

ग्रीन

जुलाई 15, 2015
फोर्ट वर्थ
  • अक्टूबर 25, 2017
gnasher729 ने कहा: त्रुटि के लिए जाँच करने का सही तरीका है। उदाहरण के लिए

अगर डी = डबल (माईवैल्यू), डी> 10 {
// MyValue में एक संख्या है, और संख्या> 10 है।
} अन्यथा {
// MyValue में कोई संख्या नहीं थी, या संख्या थी<= 10.
}

यह अस्पष्ट है - क्या होगा यदि मूल्य हो रहा है<= 10 should produce different results from the value being nil? To be fair, the OP's post is ambiguous as they were forcing the unwrap, meaning a nil value would crash. However in most business cases, a nil value would be handled differently (safely) from an insufficient value.

एक बहुत साफ तरीका होगा:

कोड: |_+_|
हालांकि, मुझे वास्तव में लगता है कि MyValue को शुरुआत से डबल के रूप में संग्रहीत किया जाना चाहिए, और जो भी स्वरूपण की आवश्यकता है उसे संभालने के लिए बाद में एक NumberFormatter लागू किया जाना चाहिए। जो कोई भी कोड को पढ़ना समाप्त करता है, उसके लिए इसका संज्ञानात्मक बोझ बहुत कम होता है।
प्रतिक्रियाएं:उद्यम

gnasher729

निलंबित
25 नवंबर, 2005
  • अक्टूबर 26, 2017
maculateConception ने कहा: क्या आपको स्कूल में धमकाया गया था? ऐसा लगता है कि आपका आत्म-सम्मान काफी कम है क्योंकि आप मुझ पर हमला किए बिना जवाब नहीं दे सकते।

यह आपसे मेरी पहली और आखिरी बातचीत होगी। आपको सुझाव - अधिक सभ्य तरीके से संवाद करने का प्रयास करें, और जीवन बहुत अच्छा होगा। ख्याल रखना।

अच्छा, मैंने तुम पर हमला नहीं किया। मैंने आपकी पोस्ट पर हमला किया, जो दर्शाता है कि आप स्विफ्ट के बारे में बहुत कम जानते हैं, और इसमें एक बहुत ही खतरनाक सिफारिश शामिल है। एस

साइरस

प्रति
अगस्त 21, 2008
  • अक्टूबर 26, 2017
मैं अधिकांश समय की रक्षा करता हूं लेकिन यदि कक्षा में प्रत्येक कार्य एक ही चर की रक्षा करता है ... शायद आपके प्रारंभिक इंटरफ़ेस पर पुनर्विचार करना चाहें।

डालने

अप्रैल 14, 2018
  • अप्रैल 14, 2018
स्विफ्ट, सुनिश्चित नहीं है कि आपका मान बिल्कुल int है। सुनिश्चित करने के लिए दो विकल्प हैं।
1) '!' आप यह संकेत दे सकते हैं कि यह मान चिह्न जोड़कर सटीक होगा।
कोड: |_+_| 2) मान को परिभाषित करते समय आप प्रकार निर्दिष्ट कर सकते हैं।
कोड: |_+_| प्रति

उद्यम

28 जनवरी, 2006
  • अप्रैल 27, 2018
ynstek ने कहा: स्विफ्ट, सुनिश्चित नहीं है कि आपका मान बिल्कुल int है। सुनिश्चित करने के लिए दो विकल्प हैं।
1) '!' आप यह संकेत दे सकते हैं कि यह मान चिह्न जोड़कर सटीक होगा।
कोड: |_+_| 2) मान को परिभाषित करते समय आप प्रकार निर्दिष्ट कर सकते हैं।
कोड: |_+_|

मुझे लगता है कि आपका # 2 उदाहरण विफल हो जाएगा क्योंकि आप एक स्ट्रिंग कास्ट को एक डबल से एक इंट वैरिएबल में असाइन करने का प्रयास कर रहे हैं। साथ ही, आप मान रहे हैं कि MyValue शून्य नहीं है, जो रनटाइम त्रुटि का कारण बन सकता है, यह शून्य या गैर-संख्यात्मक होना चाहिए।

आपका #1 उदाहरण स्पष्टीकरण भी सही नहीं है। विस्मयादिबोधक चिह्न किसी मान को इंट में नहीं बदलता है। यह एक वैकल्पिक चर के मान को खोल देता है। आपके उदाहरण में, आप एक डबल मान के साथ समाप्त होंगे, न कि एक इंट, और केवल तभी जब MyValue शून्य या गैर-संख्यात्मक मान नहीं था।