abcdefg12345
פוסטר מקורי- 10 ביולי 2013
- 21 באוקטובר 2017
מהיר 4
קוד: |_+_|
אני משתמש במחרוזת משתנה כי אני צריך שהיא תהיה מחרוזת כדי שאוכל לעצב אותה מאוחר יותר, הגדרתי אותה בתור
קוד: |_+_|
abcdefg12345
פוסטר מקורי- 10 ביולי 2013
- 21 באוקטובר 2017
קוד: |_+_|
0002378
מוּשׁהֶה
- 28 במאי 2017
- 23 באוקטובר 2017
ובעוד לאופציות יש את היתרונות שלהם, הם גם גורמים לי לרצות לרסק את המחשב שלי בקצוות העליונים של פח אשפה.
עם זאת, המקום בו סוויפט באמת בועט הוא במחלקת הסגירות... אה כן! גם לג'אווה יש אותם, עכשיו, אבל...
וכמובן, העובדה שסוויפט פחות מחמירה בהכרזת הטיפוסים והנקודה-פסיק המציקים האלה... מדהים!
תגובות:abcdefg12345
0002378
מוּשׁהֶה
- 28 במאי 2017
- 24 באוקטובר 2017
אתה לא צריך משתנה חדש. אתה יכול פשוט להוסיף '!' ל(מחרוזת) הכפולה שלך, וזה יעבוד.
אני מניח שטעיתי לגבי שסוויפט טיפש במקרה הזה. אבל, נתקלתי במקרים רבים של תלונות מהדר כאלה (אי אפשר להשוות בין שני סוגים מספריים שונים).
גרין
- 15 ביולי 2015
- פורט וורת'
- 24 באוקטובר 2017
לחלופין, תוכל להשתמש בכריכה אופציונלית כדי לפרוק את הערך. הייתי מנסה קודם כל אחת מהשיטות האלה לפני השימוש בכוח פתיחה
gnasher729
מוּשׁהֶה
- 25 בנובמבר, 2005
- 24 באוקטובר 2017
maculateConception אמר: אני חושב שסוויפט, כשפה, די מצחיק לפעמים, במיוחד. מגיע מתכנות Java. והבאת את אחת הדוגמאות הטובות ביותר לכך.זה די חסר מושג. הבעיה היא שה-OP לא יודע על תכונה בסיסית של Swift, שהיא ערכים אופציונליים. הבנאי Double(String) יכול כמובן להיכשל אם המחרוזת אינה מכילה מספר. זו הסיבה ש-Double (מחרוזת) לא מייצרת ולא יכולה לייצר תוצאה מסוג Double, אלא אחת מסוג Double? , זה כפול אופציונלי. ואי אפשר להשוות Double אופציונלי עם Int.
ה'פתרון' שלך ממש ממש נורא. ה ! פירושו 'אני בטוח שההמרה הזו תצליח. אם לא, נא לקרוס את האפליקציה'. תן d = כפול ('1234x')! פשוט יקרוס. בְּמֵזִיד. כי לא בדקת אפס, וזה היה אפס.
הדרך הנכונה היא לבדוק את השגיאה. לדוגמה
if let d = Double (MyValue), d > 10 {
// MyValue הכיל מספר, והמספר הוא > 10.
} אחר {
// MyValue לא הכיל מספר, או שהמספר היה<= 10.
}
אם אתם חושבים שכדאי לכתוב קוד בטוח ובאמת עובד, אז Swift היא השפה הנכונה.
0002378
מוּשׁהֶה
- 28 במאי 2017
- 24 באוקטובר 2017
gnasher729 אמר: זה די חסר מושג. הבעיה היא שה-OP לא יודע על תכונה בסיסית של Swift, שהיא ערכים אופציונליים. הבנאי Double(String) יכול כמובן להיכשל אם המחרוזת אינה מכילה מספר. זו הסיבה ש-Double (מחרוזת) לא מייצרת ולא יכולה לייצר תוצאה מסוג Double, אלא אחת מסוג Double? , זה כפול אופציונלי. ואי אפשר להשוות Double אופציונלי ל-Int.
הציקו לך בבית הספר? נראה שיש לך דימוי עצמי נמוך כי לא יכולת להגיב בלי לתקוף אותי.
זו תהיה התקשורת הראשונה והאחרונה שלי אליך. הצעה אליך - נסו לתקשר בצורה אזרחית יותר, והחיים יהיו נהדרים. שמור על עצמך.
גרין
- 15 ביולי 2015
- פורט וורת'
- 25 באוקטובר 2017
gnasher729 אמר: הדרך הנכונה היא בדיקת השגיאה. לדוגמה
if 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 אמרה: האם הציקו לך בבית הספר? נראה שיש לך דימוי עצמי נמוך כי לא יכולת להגיב בלי לתקוף אותי.
זו תהיה התקשורת הראשונה והאחרונה שלי אליך. הצעה אליך - נסו לתקשר בצורה אזרחית יותר, והחיים יהיו נהדרים. שמור על עצמך.
ובכן, לא תקפתי אותך. תקפתי את הפוסט שלך, שממחיש שאתה יודע מעט מאוד על סוויפט, וכלל המלצה אחת מאוד מסוכנת. ס
SAIRUS
ל
- 21 באוגוסט, 2008
- 26 באוקטובר 2017
לְהַכנִיס
- 14 באפריל, 2018
- 14 באפריל, 2018
1) '!' אתה יכול לציין שערך זה יהיה מדויק int על ידי הוספת הסימן.
קוד: |_+_| 2) ניתן לציין את הסוג בעת הגדרת הערך.
קוד: |_+_| ל
מפעלים
- 28 בינואר 2006
- 27 באפריל, 2018
ynstek אמר: סוויפט, לא בטוח שהערך שלך הוא בדיוק int. יש שתי אפשרויות לוודא.
1) '!' אתה יכול לציין שערך זה יהיה מדויק int על ידי הוספת הסימן.
קוד: |_+_| 2) ניתן לציין את הסוג בעת הגדרת הערך.
קוד: |_+_|
אני חושב שהדוגמה מספר 2 שלך תיכשל כי אתה מנסה להקצות cast מחרוזת למשתנה כפול ל-Int. כמו כן, אתה מניח ש-MyValue אינו אפס, מה שעלול לגרום לשגיאת זמן ריצה אם הוא יהיה אפס או לא מספרי.
גם ההסבר לדוגמא מספר 1 שלך לא נכון. סימן קריאה אינו ממיר ערך ל-Int. זה פותח את הערך של משתנה אופציונלי. בדוגמה שלך, תקבל ערך Double, לא Int, ורק אם MyValue לא היה אפס או ערך לא מספרי.
רשום פופולרי