فورمز

میک بائنری آپریٹر '>' کو 'ڈبل؟' قسم کے آپرینڈز پر لاگو نہیں کیا جا سکتا۔ اور 'Int'

abcdefg12345

اصل پوسٹر
10 جولائی 2013
  • 21 اکتوبر 2017
میں یہ چیک کرنے کے لیے if اسٹیٹمنٹ رکھنے کی کوشش کر رہا ہوں کہ آیا کسی سٹرنگ میں ڈبل ویلیو 10 سے بڑی ہے لیکن میں 'Binary operator'>' قسم کے آپرینڈز پر لاگو نہیں کیا جا سکتا 'ڈبل؟' اور 'Int' کوئی جانتا ہے کہ میں کیا غلط کر رہا ہوں۔

تیز رفتار 4
کوڈ: |_+_|
میں ایک متغیر سٹرنگ استعمال کر رہا ہوں کیونکہ مجھے اس کی سٹرنگ کی ضرورت ہے تاکہ میں اسے بعد میں فارمیٹ کر سکوں، میں نے اس کی تعریف کی
کوڈ: |_+_|

abcdefg12345

اصل پوسٹر
10 جولائی 2013


  • 21 اکتوبر 2017
ایک اور متغیر کو شامل کرکے اسے ٹھیک کیا۔
کوڈ: |_+_|
ردعمل:960 ڈیزائن

0002378

معطل
28 مئی 2017
  • 23 اکتوبر 2017
مجھے لگتا ہے کہ سوئفٹ، ایک زبان کے طور پر، بعض اوقات، خاص طور پر کافی ہنسنے والا ہوتا ہے۔ جاوا پروگرامنگ سے آرہا ہے۔ اور، آپ نے اس کی ایک بہترین مثال پیش کی۔

اور، جب کہ اختیاری کے اپنے فوائد ہیں، وہ مجھے اپنے کمپیوٹر کو ڈمپسٹر کے اوپری کناروں سے توڑنے پر مجبور کرتے ہیں۔

تاہم، جہاں سوئفٹ واقعی گدا کو لات مارتی ہے وہ بندش کے شعبے میں ہے ... اوہ ہاں! جاوا میں بھی ان کے پاس ہے، لیکن...

اور، یقیناً، یہ حقیقت کہ سوئفٹ اقسام اور ان پریشان کن نیم کالونوں کے اعلان میں کم سخت ہے... بہت اچھا!

ردعمل:abcdefg12345

0002378

معطل
28 مئی 2017
  • 24 اکتوبر 2017
اوہ انتظار کریں، اب جب میں آپ کے کوڈ پر نظر ڈالتا ہوں، میں دیکھتا ہوں کہ آپ کی ڈبل(سٹرنگ) ویلیو کا اندازہ Double؟، جو کہ ایک اختیاری قدر ہے۔

آپ کو نئے متغیر کی ضرورت نہیں ہے۔ آپ صرف شامل کر سکتے ہیں '!' آپ کے ڈبل (سٹرنگ) پر، اور یہ کام کرے گا۔

میرا اندازہ ہے کہ میں اس معاملے میں سوئفٹ کے بیوقوف ہونے کے بارے میں غلط تھا۔ لیکن، میں نے ایسی کمپائلر شکایات کے بہت سے معاملات کا سامنا کیا ہے (دو مختلف عددی اقسام کا موازنہ کرنے سے قاصر)۔

گرین

15 جولائی 2015
فورٹ ورتھ
  • 24 اکتوبر 2017
میرے خیال میں ایک صاف ستھرا، زیادہ تیز حل یہ ہوگا کہ آپ اپنے MyValue کو ڈبل یا int کے طور پر اسٹور کریں (جو ایسا لگتا ہے)۔ اس کے بعد آپ فارمیٹنگ کو سنبھالنے کے لیے نمبر فارمیٹر استعمال کر سکتے ہیں۔

یا آپ قدر کو کھولنے کے لیے اختیاری بائنڈنگ استعمال کر سکتے ہیں۔ میں ان طریقوں میں سے کسی ایک کو فورس کھولنے سے پہلے آزماؤں گا۔

gnasher729

معطل
25 نومبر 2005
  • 24 اکتوبر 2017
maculateConception نے کہا: مجھے لگتا ہے کہ سوئفٹ، بطور زبان، بعض اوقات کافی ہنسنے والا ہوتا ہے۔ جاوا پروگرامنگ سے آرہا ہے۔ اور، آپ نے اس کی ایک بہترین مثال پیش کی۔
یہ بالکل بے خبر ہے۔ مسئلہ یہ ہے کہ او پی کو سوئفٹ کی ایک بنیادی خصوصیت کے بارے میں نہیں معلوم، جو کہ اختیاری اقدار ہیں۔ کنسٹرکٹر ڈبل (اسٹرنگ) واضح طور پر ناکام ہوسکتا ہے اگر اسٹرنگ میں کوئی نمبر نہیں ہے۔ یہی وجہ ہے کہ ڈبل (اسٹرنگ) ڈبل ٹائپ کا نتیجہ نہیں بناتا اور نہیں بنا سکتا، لیکن ڈبل ٹائپ میں سے ایک؟ ، یہ ایک اختیاری ڈبل ہے۔ اور اختیاری ڈبل کا موازنہ Int سے نہیں کیا جا سکتا۔

آپ کا 'حل' واقعی، واقعی خوفناک ہے۔ ! مطلب 'مجھے یقین ہے کہ یہ تبدیلی کامیاب ہوگی۔ اگر ایسا نہیں ہوتا ہے تو براہ کرم ایپ کو کریش کریں۔ let d = ڈبل ('1234x')! بس کریش ہو جائے گا. جان بوجھ کر۔ کیونکہ آپ نے صفر کی جانچ نہیں کی، اور یہ صفر تھا۔

درست طریقہ غلطی کی جانچ کرنا ہے۔ مثال کے طور پر

اگر let d = Double (MyValue)، d > 10 {
// MyValue میں ایک نمبر ہے، اور نمبر ہے > 10۔
} اور {
// MyValue میں کوئی نمبر نہیں تھا، یا نمبر تھا۔<= 10.
}

اگر آپ کو لگتا ہے کہ کوڈ لکھنا فائدہ مند ہے جو محفوظ ہے اور حقیقت میں کام کرتا ہے، تو Swift صحیح زبان ہے۔
ردعمل:atmenterprises اور ajthom90

0002378

معطل
28 مئی 2017
  • 24 اکتوبر 2017
gnasher729 نے کہا: یہ بالکل بے خبر ہے۔ مسئلہ یہ ہے کہ او پی کو سوئفٹ کی ایک بنیادی خصوصیت کے بارے میں نہیں معلوم، جو کہ اختیاری اقدار ہیں۔ کنسٹرکٹر ڈبل (اسٹرنگ) واضح طور پر ناکام ہوسکتا ہے اگر اسٹرنگ میں کوئی نمبر نہیں ہے۔ یہی وجہ ہے کہ Double (String) قسم 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 کو بعد میں نافذ کیا جائے۔ جو بھی کوڈ کو پڑھتا ہے اس کے لیے اس کا علمی بوجھ بہت کم ہوتا ہے۔
ردعمل:انٹرپرائزز

gnasher729

معطل
25 نومبر 2005
  • 26 اکتوبر 2017
maculateConception نے کہا: کیا آپ کو اسکول میں غنڈہ گردی ہوئی؟ ایسا لگتا ہے کہ آپ کی خود اعتمادی کافی کم ہے کیونکہ آپ مجھ پر حملہ کیے بغیر جواب نہیں دے سکتے تھے۔

یہ آپ سے میری پہلی اور آخری بات چیت ہوگی۔ آپ کے لیے تجویز - زیادہ سول انداز میں بات چیت کرنے کی کوشش کریں، اور زندگی بہت اچھی گزرے گی۔ خیال رکھنا.

ٹھیک ہے، میں نے آپ پر حملہ نہیں کیا. میں نے آپ کی پوسٹ پر حملہ کیا، جس سے ظاہر ہوتا ہے کہ آپ Swift کے بارے میں بہت کم جانتے ہیں، اور اس میں ایک انتہائی خطرناک تجویز بھی شامل ہے۔ ایس

سائرس

کو
21 اگست 2008
  • 26 اکتوبر 2017
میں اکثر اوقات حفاظت کرتا ہوں لیکن اگر کلاس میں ہر ایک فنکشن ایک ہی متغیر کی حفاظت کرتا ہے...ہو سکتا ہے آپ کے ابتدائی انٹرفیس پر دوبارہ غور کرنا چاہے۔

داخل کریں

14 اپریل 2018
  • 14 اپریل 2018
Swift، اس بات کا یقین نہیں ہے کہ آپ کی قیمت بالکل int ہے. اس بات کو یقینی بنانے کے لیے دو اختیارات ہیں۔
1) '!' آپ نشان کو شامل کر کے اشارہ کر سکتے ہیں کہ یہ قدر بالکل درست ہو گی۔
کوڈ: |_+_| 2) قدر کی وضاحت کرتے وقت آپ قسم کی وضاحت کر سکتے ہیں۔
کوڈ: |_+_| TO

انٹرپرائزز

28 جنوری 2006
  • 27 اپریل 2018
ynstek نے کہا: Swift، یقین نہیں ہے کہ آپ کی قیمت بالکل int ہے۔ اس بات کو یقینی بنانے کے لیے دو اختیارات ہیں۔
1) '!' آپ نشان کو شامل کر کے اشارہ کر سکتے ہیں کہ یہ قدر بالکل درست ہو گی۔
کوڈ: |_+_| 2) قدر کی وضاحت کرتے وقت آپ قسم کی وضاحت کر سکتے ہیں۔
کوڈ: |_+_|

مجھے لگتا ہے کہ آپ کی #2 مثال ناکام ہو جائے گی کیونکہ آپ سٹرنگ کاسٹ کو انٹ متغیر کو ڈبل کرنے کی کوشش کر رہے ہیں۔ اس کے علاوہ، آپ فرض کر رہے ہیں کہ MyValue صفر نہیں ہے، جو رن ٹائم کی خرابی کا سبب بن سکتا ہے اگر یہ صفر یا غیر عددی ہو۔

آپ کی #1 مثال کی وضاحت بھی درست نہیں ہے۔ ایک فجائیہ نشان کسی قدر کو Int میں تبدیل نہیں کرتا ہے۔ یہ ایک اختیاری متغیر کی قدر کو کھولتا ہے۔ آپ کی مثال میں، آپ کا اختتام ڈبل ویلیو کے ساتھ ہوگا، Int نہیں، اور صرف اس صورت میں جب MyValue صفر یا غیر عددی قدر نہ ہو۔