abcdefg12345
Πρωτότυπη αφίσα- 10 Ιουλίου 2013
- 21 Οκτωβρίου 2017
γρήγορος 4
Κωδικός: |_+_|
χρησιμοποιώ μια μεταβλητή συμβολοσειρά επειδή χρειάζομαι να είναι συμβολοσειρά για να μπορώ να τη μορφοποιήσω αργότερα, την όρισα ως
Κωδικός: |_+_|
abcdefg12345
Πρωτότυπη αφίσα- 10 Ιουλίου 2013
- 21 Οκτωβρίου 2017
Κωδικός: |_+_|
0002378
Ανασταλεί
- 28 Μαΐου 2017
- 23 Οκτωβρίου 2017
Και, ενώ τα προαιρετικά έχουν τα πλεονεκτήματά τους, με κάνουν επίσης να θέλω να σπάσω τον υπολογιστή μου στις επάνω άκρες ενός κάδου.
Ωστόσο, εκεί που η Swift πραγματικά τσακώνει είναι στο τμήμα κλεισίματος ... ω ναι! Τα έχει και η Java τώρα, αλλά...
Και, φυσικά, το γεγονός ότι το Swift είναι λιγότερο αυστηρό στη δήλωση τύπων και αυτά τα ενοχλητικά ερωτηματικά ... φοβερά!
Αντιδράσεις:abcdefg12345
0002378
Ανασταλεί
- 28 Μαΐου 2017
- 24 Οκτωβρίου 2017
Δεν χρειάζεστε νέα μεταβλητή. Μπορείτε απλώς να προσθέσετε '!' στο Double(string) σας και θα λειτουργήσει.
Υποθέτω ότι έκανα λάθος που η Swift ήταν ανόητη σε αυτή την περίπτωση. Όμως, έχω συναντήσει πολλές περιπτώσεις τέτοιων παραπόνων μεταγλωττιστή (δεν μπορώ να συγκρίνω δύο διαφορετικούς αριθμούς τύπους).
Γκριν
- 15 Ιουλίου 2015
- Φορτ Γουόρθ
- 24 Οκτωβρίου 2017
Ή μπορείτε να χρησιμοποιήσετε προαιρετικό δέσιμο για να ξετυλίξετε την τιμή. Θα δοκίμαζα πρώτα μία από αυτές τις μεθόδους πριν χρησιμοποιήσω ένα δυναμικό ξετύλιγμα
gnasher729
Ανασταλεί
- 25 Νοεμβρίου 2005
- 24 Οκτωβρίου 2017
maculateConception είπε: Νομίζω ότι η Swift, ως γλώσσα, είναι αρκετά γελοία μερικές φορές, π.χ. προέρχονται από τον προγραμματισμό Java. Και, αναφέρατε ένα από τα καλύτερα παραδείγματα αυτού.Αυτό είναι εντελώς ανίδεο. Το πρόβλημα είναι ότι το OP δεν γνωρίζει για ένα βασικό χαρακτηριστικό του Swift, το οποίο είναι οι προαιρετικές τιμές. Ο κατασκευαστής Double(String) μπορεί προφανώς να αποτύχει εάν η συμβολοσειρά δεν περιέχει αριθμό. Γι' αυτό το Double (String) δεν παράγει και δεν μπορεί να παράγει αποτέλεσμα τύπου Double, αλλά ένα τύπου Double; , δηλαδή ένα προαιρετικό Διπλό. Και ένα προαιρετικό Double δεν μπορεί να συγκριθεί με ένα Int.
Η «λύση» σας είναι πραγματικά, πραγματικά απαίσια. Ο ! σημαίνει «Είμαι σίγουρος ότι αυτή η μετατροπή θα πετύχει. Εάν δεν συμβεί, παρακαλούμε να διαγράψετε την εφαρμογή». έστω d = Διπλό ('1234x')! απλά θα συντριβεί. Εκ προθέσεως. Γιατί δεν έλεγξες για μηδέν, και ήταν μηδέν.
Ο σωστός τρόπος είναι ο έλεγχος για το σφάλμα. Για παράδειγμα
αν έστω d = Double (MyValue), d > 10 {
// Το MyValue περιείχε έναν αριθμό και ο αριθμός είναι > 10.
} αλλο {
// Το MyValue δεν περιείχε αριθμό ή ο αριθμός ήταν<= 10.
}
Εάν πιστεύετε ότι αξίζει τον κόπο να γράψετε κώδικα που να είναι ασφαλής και να λειτουργεί πραγματικά, τότε το Swift είναι η σωστή γλώσσα.
0002378
Ανασταλεί
- 28 Μαΐου 2017
- 24 Οκτωβρίου 2017
gnasher729 είπε: Αυτό είναι εντελώς ανίδεο. Το πρόβλημα είναι ότι το OP δεν γνωρίζει για ένα βασικό χαρακτηριστικό του Swift, το οποίο είναι οι προαιρετικές τιμές. Ο κατασκευαστής Double(String) μπορεί προφανώς να αποτύχει εάν η συμβολοσειρά δεν περιέχει αριθμό. Γι' αυτό το Double (String) δεν παράγει και δεν μπορεί να παράγει αποτέλεσμα τύπου Double, αλλά ένα τύπου Double; , δηλαδή ένα προαιρετικό Διπλό. Και ένα προαιρετικό Double δεν μπορεί να συγκριθεί με ένα Int.
Δέχτηκες bullying στο σχολείο; Φαίνεται να έχεις αρκετά χαμηλή αυτοεκτίμηση γιατί δεν μπορούσες να απαντήσεις χωρίς να μου επιτεθείς.
Αυτή θα είναι η πρώτη και τελευταία μου επικοινωνία μαζί σας. Πρόταση σε εσάς - προσπαθήστε να επικοινωνήσετε με έναν πιο πολιτισμένο τρόπο και η ζωή θα είναι υπέροχη. Να προσέχεις.
Γκριν
- 15 Ιουλίου 2015
- Φορτ Γουόρθ
- 25 Οκτωβρίου 2017
gnasher729 είπε: Ο σωστός τρόπος είναι ο έλεγχος για το σφάλμα. Για παράδειγμα
αν έστω 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 θα πρέπει να αποθηκευτεί ως Double από την αρχή και ένα NumberFormatter να εφαρμοστεί αργότερα για να χειριστεί οποιαδήποτε μορφοποίηση χρειάζεται. Αυτό έχει πολύ μικρότερο γνωστικό βάρος για όποιον καταλήγει να διαβάζει τον κώδικα.
gnasher729
Ανασταλεί
- 25 Νοεμβρίου 2005
- 26 Οκτωβρίου 2017
maculateConception είπε: Υπήρξατε εκφοβισμός στο σχολείο; Φαίνεται να έχεις αρκετά χαμηλή αυτοεκτίμηση γιατί δεν μπορούσες να απαντήσεις χωρίς να μου επιτεθείς.
Αυτή θα είναι η πρώτη και τελευταία μου επικοινωνία μαζί σας. Πρόταση σε εσάς - προσπαθήστε να επικοινωνήσετε με έναν πιο πολιτισμένο τρόπο και η ζωή θα είναι υπέροχη. Να προσέχεις.
Λοιπόν, δεν σου επιτέθηκα. Επιτέθηκα στη δημοσίευσή σας, η οποία δείχνει ότι γνωρίζετε πολύ λίγα για τη Swift και συμπεριέλαβε μια πολύ επικίνδυνη σύσταση. μικρό
ΣΑΙΡΟΥΣ
προς το
- 21 Αυγούστου 2008
- 26 Οκτωβρίου 2017
εισάγετε
- 14 Απριλίου 2018
- 14 Απριλίου 2018
1) '!' μπορείτε να υποδείξετε ότι αυτή η τιμή θα είναι ακριβής, προσθέτοντας το σημάδι.
Κωδικός: |_+_| 2) Μπορείτε να καθορίσετε τον τύπο κατά τον καθορισμό της τιμής.
Κωδικός: |_+_| ΠΡΟΣ ΤΟ
επιχειρήσεις
- 28 Ιανουαρίου 2006
- 27 Απριλίου 2018
ynstek είπε: Swift, δεν είναι σίγουρο ότι η τιμή σας είναι ακριβώς int. Υπάρχουν δύο επιλογές για να βεβαιωθείτε.
1) '!' μπορείτε να υποδείξετε ότι αυτή η τιμή θα είναι ακριβής, προσθέτοντας το σημάδι.
Κωδικός: |_+_| 2) Μπορείτε να καθορίσετε τον τύπο κατά τον καθορισμό της τιμής.
Κωδικός: |_+_|
Νομίζω ότι το #2 παράδειγμά σας θα αποτύχει επειδή προσπαθείτε να αντιστοιχίσετε μια συμβολοσειρά cast σε ένα double σε μια μεταβλητή Int. Επίσης, υποθέτετε ότι το MyValue δεν είναι μηδενικό, το οποίο θα μπορούσε να προκαλέσει σφάλμα χρόνου εκτέλεσης εάν είναι μηδενικό ή μη αριθμητικό.
Το νούμερο 1 παράδειγμα εξήγησής σας δεν είναι επίσης σωστή. Ένα θαυμαστικό δεν μετατρέπει μια τιμή σε Int. Ξετυλίγει την τιμή μιας προαιρετικής μεταβλητής. Στο παράδειγμά σας, θα καταλήξετε με μια τιμή Double, όχι μια Int, και μόνο εάν η MyValue δεν ήταν μηδενική ή μια μη αριθμητική τιμή.
Δημοφιλείς Αναρτήσεις