ফোরাম

ম্যাক বাইনারি অপারেটর '>' 'ডবল?' টাইপের অপারেন্ডে প্রয়োগ করা যাবে না এবং 'Int'

abcdefg12345

আসল পোস্টার
10 জুলাই, 2013
  • 21 অক্টোবর, 2017
আমি একটি স্ট্রিং এর দ্বিগুণ মান 10 এর চেয়ে বড় কিনা তা পরীক্ষা করার জন্য একটি if বিবৃতি দেওয়ার চেষ্টা করছি কিন্তু আমি একটি ত্রুটি পেতে আগ্রহী 'বাইনারী অপারেটর '>' 'ডাবল?' টাইপের অপারেন্ডে প্রয়োগ করা যাবে না। এবং 'Int' কেউ জানে আমি কি ভুল করছি।

সুইফট 4
কোড: |_+_|
আমি একটি পরিবর্তনশীল স্ট্রিং ব্যবহার করছি কারণ আমার এটি একটি স্ট্রিং হওয়া দরকার যাতে আমি এটিকে পরে ফর্ম্যাট করতে পারি, আমি এটিকে সংজ্ঞায়িত করেছি
কোড: |_+_|

abcdefg12345

আসল পোস্টার
10 জুলাই, 2013


  • 21 অক্টোবর, 2017
অন্য একটি ভেরিয়েবল যোগ করে এটি ঠিক করুন
কোড: |_+_|
প্রতিক্রিয়া:960 ডিজাইন

0002378

স্থগিত
28 মে, 2017
  • 23 অক্টোবর, 2017
আমি মনে করি যে সুইফট, একটি ভাষা হিসাবে, মাঝে মাঝে বেশ হাস্যকর হয়, বিশেষ করে। জাভা প্রোগ্রামিং থেকে আসছে। এবং, আপনি যে সেরা উদাহরণ এক আনা.

এবং, যদিও ঐচ্ছিক তাদের সুবিধা আছে, তারা আমাকে একটি ডাম্পস্টারের উপরের প্রান্তগুলির বিরুদ্ধে আমার কম্পিউটারকে ভেঙে দিতে চায়।

যাইহোক, যেখানে সুইফ্ট আসলেই গাধায় লাথি মেরেছে সেখানে বন্ধের বিভাগে... ওহ হ্যাঁ! জাভা তাদেরও আছে, এখন, কিন্তু...

এবং, অবশ্যই, এই সত্য যে সুইফটের প্রকারের ঘোষণা কম কঠোর এবং সেই কষ্টকর সেমি-কোলন... দুর্দান্ত!

প্রতিক্রিয়া:abcdefg12345

0002378

স্থগিত
28 মে, 2017
  • 24 অক্টোবর, 2017
ওহ অপেক্ষা করুন, এখন আমি আপনার কোডের দিকে ফিরে তাকাই, আমি দেখতে পাচ্ছি যে আপনার ডাবল(স্ট্রিং) মান দ্বিগুণ মূল্যায়ন করে?, যা একটি ঐচ্ছিক মান।

আপনি একটি নতুন পরিবর্তনশীল প্রয়োজন নেই. আপনি শুধু যোগ করতে পারেন '!' আপনার ডাবল (স্ট্রিং) এ, এবং এটি কাজ করবে।

আমার ধারণা এই ক্ষেত্রে সুইফটের বোকা হওয়ার বিষয়ে আমি ভুল ছিলাম। কিন্তু, আমি এই ধরনের কম্পাইলার অভিযোগের অনেক ক্ষেত্রে সম্মুখীন হয়েছি (দুটি ভিন্ন সংখ্যাসূচক ধরনের তুলনা করতে অক্ষম)।

গ্রিন

15 জুলাই, 2015
ফোর্ট ওয়ার্থ
  • 24 অক্টোবর, 2017
আমি মনে করি একটি ক্লিনার, আরও দ্রুত সমাধান হবে আপনার মাইভ্যালুকে ডাবল বা int হিসাবে সংরক্ষণ করা (যা মনে হয়)। আপনি তারপর বিন্যাস পরিচালনা করতে একটি NumberFormatter ব্যবহার করতে পারেন।

অথবা আপনি মানটি খুলতে ঐচ্ছিক বাঁধাই ব্যবহার করতে পারেন। ফোর্স আনর্যাপ ব্যবহার করার আগে আমি প্রথমে এই পদ্ধতিগুলির মধ্যে একটি চেষ্টা করব

gnasher729

স্থগিত
25 নভেম্বর, 2005
  • 24 অক্টোবর, 2017
maculateConception বলেছেন: আমি মনে করি যে সুইফট, একটি ভাষা হিসাবে, মাঝে মাঝে বেশ হাস্যকর হয়, বিশেষ করে। জাভা প্রোগ্রামিং থেকে আসছে। এবং, আপনি যে সেরা উদাহরণ এক আনা.
যে বেশ অজ্ঞাত. সমস্যা হল যে ওপি সুইফটের একটি মৌলিক বৈশিষ্ট্য সম্পর্কে জানে না, যা ঐচ্ছিক মান। কন্সট্রাক্টর ডাবল(স্ট্রিং) স্পষ্টতই ব্যর্থ হতে পারে যদি স্ট্রিংটিতে একটি সংখ্যা না থাকে। এই কারণেই Double (স্ট্রিং) Double টাইপের ফলাফল তৈরি করে না এবং করতে পারে না, কিন্তু Double টাইপের একটি? , এটি একটি ঐচ্ছিক ডাবল। এবং একটি ঐচ্ছিক Double একটি Int এর সাথে তুলনা করা যায় না।

আপনার 'সমাধান' সত্যিই, সত্যিই ভয়ঙ্কর. দ্য ! মানে 'আমি নিশ্চিত এই রূপান্তর সফল হবে। যদি তা না হয় তাহলে অনুগ্রহ করে অ্যাপটি ক্রাশ করুন'। let d = Double ('1234x')! শুধু বিপর্যস্ত হবে. ইচ্ছাকৃতভাবে। কারণ আপনি শূন্যের জন্য চেক করেননি, এবং এটি শূন্য ছিল।

সঠিক উপায় ত্রুটির জন্য পরীক্ষা করা হয়. উদাহরণ স্বরূপ

যদি let d = Double (MyValue), d > 10 {
// MyValue-এ একটি সংখ্যা রয়েছে এবং সংখ্যাটি হল > 10৷
} অন্য {
// MyValue-এ একটি সংখ্যা ছিল না, বা নম্বরটি ছিল৷<= 10.
}

আপনি যদি মনে করেন যে কোড লেখার জন্য এটি সার্থক যা নিরাপদ এবং বাস্তবে কাজ করে, তাহলে সুইফট হল সঠিক ভাষা।
প্রতিক্রিয়া:atmenterprises এবং ajthom90

0002378

স্থগিত
28 মে, 2017
  • 24 অক্টোবর, 2017
gnasher729 বলেছেন: এটা একেবারেই অজ্ঞাত। সমস্যা হল যে ওপি সুইফটের একটি মৌলিক বৈশিষ্ট্য সম্পর্কে জানে না, যা ঐচ্ছিক মান। কন্সট্রাক্টর ডাবল(স্ট্রিং) স্পষ্টতই ব্যর্থ হতে পারে যদি স্ট্রিংটিতে একটি সংখ্যা না থাকে। এই কারণেই Double (স্ট্রিং) Double টাইপের ফলাফল তৈরি করে না এবং করতে পারে না, কিন্তু Double টাইপের একটি? , এটি একটি ঐচ্ছিক ডাবল। এবং একটি ঐচ্ছিক Double একটি Int এর সাথে তুলনা করা যায় না।

তুমি কি স্কুলে বখাটে ছিলে? আপনি বেশ কম আত্মসম্মান আছে বলে মনে হচ্ছে কারণ আপনি আমাকে আক্রমণ না করে প্রতিক্রিয়া জানাতে পারেননি।

এটি আপনার সাথে আমার প্রথম এবং শেষ যোগাযোগ হবে। আপনাকে পরামর্শ - আরও নাগরিক উপায়ে যোগাযোগ করার চেষ্টা করুন এবং জীবন দুর্দান্ত হবে। যত্ন নিবেন.

গ্রিন

15 জুলাই, 2015
ফোর্ট ওয়ার্থ
  • 25 অক্টোবর, 2017
gnasher729 বলেছেন: সঠিক উপায় হচ্ছে ত্রুটি পরীক্ষা করা। উদাহরণ স্বরূপ

যদি let d = Double (MyValue), d > 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 পরে প্রয়োগ করা হয়েছে যা কিছু ফরম্যাটিং প্রয়োজন তা পরিচালনা করার জন্য। যে কোডটি পড়া শেষ করে তার জন্য এটির অনেক কম জ্ঞানীয় বোঝা রয়েছে।
প্রতিক্রিয়া:atmenterprises

gnasher729

স্থগিত
25 নভেম্বর, 2005
  • 26 অক্টোবর, 2017
maculateConception বলেছেন: আপনি কি স্কুলে বঞ্চিত ছিলেন? আপনি বেশ কম আত্মসম্মান আছে বলে মনে হচ্ছে কারণ আপনি আমাকে আক্রমণ না করে প্রতিক্রিয়া জানাতে পারেননি।

এটি আপনার সাথে আমার প্রথম এবং শেষ যোগাযোগ হবে। আপনাকে পরামর্শ - আরও নাগরিক উপায়ে যোগাযোগ করার চেষ্টা করুন এবং জীবন দুর্দান্ত হবে। যত্ন নিবেন.

আচ্ছা, আমি তোমাকে আক্রমণ করিনি। আমি আপনার পোস্ট আক্রমণ করেছি, যা দেখায় যে আপনি সুইফ্ট সম্পর্কে খুব কম জানেন এবং একটি খুব বিপজ্জনক সুপারিশ অন্তর্ভুক্ত করেছেন। এস

সাইরুস

প্রতি
21শে আগস্ট, 2008
  • 26 অক্টোবর, 2017
আমি বেশিরভাগ সময় রক্ষা করি কিন্তু যদি একটি ক্লাসের প্রতিটি ফাংশন একই ভেরিয়েবল রক্ষা করে...আপনার প্রাথমিক ইন্টারফেস পুনর্বিবেচনা করতে পারে।

সন্নিবেশ

14 এপ্রিল, 2018
  • 14 এপ্রিল, 2018
সুইফট, নিশ্চিত না আপনার মান ঠিক int হয়. নিশ্চিত করার জন্য দুটি বিকল্প আছে।
1) '!' আপনি নির্দেশ করতে পারেন যে এই মানটি চিহ্ন যোগ করে সঠিক int হবে।
কোড: |_+_| 2) মান সংজ্ঞায়িত করার সময় আপনি টাইপ নির্দিষ্ট করতে পারেন।
কোড: |_+_| প্রতি

atmenterprises

28 জানুয়ারী, 2006
  • 27 এপ্রিল, 2018
ynstek বলেছেন: সুইফট, নিশ্চিত নই যে আপনার মান ঠিক int। নিশ্চিত করার জন্য দুটি বিকল্প আছে।
1) '!' আপনি নির্দেশ করতে পারেন যে এই মানটি চিহ্ন যোগ করে সঠিক int হবে।
কোড: |_+_| 2) মান সংজ্ঞায়িত করার সময় আপনি টাইপ নির্দিষ্ট করতে পারেন।
কোড: |_+_|

আমি মনে করি আপনার #2 উদাহরণটি ব্যর্থ হবে কারণ আপনি একটি স্ট্রিং কাস্টকে একটি Int ভেরিয়েবলের ডবলে বরাদ্দ করার চেষ্টা করছেন। এছাড়াও, আপনি ধরে নিচ্ছেন MyValue শূন্য নয়, যা রানটাইম ত্রুটির কারণ হতে পারে যদি এটি শূন্য বা অ-সংখ্যাসূচক হয়।

আপনার # 1 উদাহরণের ব্যাখ্যাটিও সঠিক নয়। একটি বিস্ময়বোধক চিহ্ন একটি মানকে Int-এ রূপান্তরিত করে না। এটি একটি ঐচ্ছিক ভেরিয়েবলের মান খুলে দেয়। আপনার উদাহরণে, আপনি একটি দ্বিগুণ মান দিয়ে শেষ করবেন, একটি Int নয়, এবং শুধুমাত্র যদি MyValue শূন্য বা একটি অ-সংখ্যাসূচক মান না হয়।