abcdefg12345
Oryginalny plakat- 10 lipca 2013 r.
- 21 paź 2017
szybki 4
Kod: |__+_|
używam zmiennej ciąg, ponieważ potrzebuję, aby była ciągiem, abym mógł go później sformatować, zdefiniowałem go jako
Kod: |__+_|
abcdefg12345
Oryginalny plakat- 10 lipca 2013 r.
- 21 paź 2017
Kod: |__+_|
0002378
Zawieszony
- 28 maja 2017 r.
- 23 paź 2017
I chociaż opcje mają swoje zalety, sprawiają również, że chcę rozbić komputer o górne krawędzie śmietnika.
Jednak tam, gdzie Swift naprawdę skopuje tyłek, jest wydział zamknięć ... o tak! Java też je ma teraz, ale ...
No i oczywiście fakt, że Swift jest mniej rygorystyczny w deklaracji typów i te nieznośne średniki… super!
Reakcje:abcdefg12345
0002378
Zawieszony
- 28 maja 2017 r.
- 24 paź 2017
Nie potrzebujesz nowej zmiennej. Możesz po prostu dodać „!” do twojego Double (string) i zadziała.
Chyba się myliłem, że Swift był w tym przypadku głupi. Ale spotkałem się z wieloma przypadkami takich skarg na kompilator (nie można porównać dwóch różnych typów liczbowych).
Greene
- 15 lipca 2015 r.
- Fort Wart
- 24 paź 2017
Możesz też użyć opcjonalnego wiązania, aby rozpakować wartość. Wypróbowałbym jedną z tych metod przed użyciem siły odwijania
zgrzytacz729
Zawieszony
- 25 listopada 2005
- 24 paź 2017
maculateConception powiedział: Myślę, że Swift, jako język, jest czasami dość śmieszny, zwł. pochodzące z programowania w Javie. I przywołałeś jeden z najlepszych przykładów.To jest zupełnie bezsensowne. Problem polega na tym, że OP nie wie o podstawowej funkcji Swift, czyli o wartościach opcjonalnych. Konstruktor Double(String) może oczywiście zawieść, jeśli String nie zawiera liczby. Dlatego Double (String) nie daje i nie może generować wyniku typu Double, ale jednego typu Double? , czyli opcjonalny Double. A opcjonalny Double nie może być porównywany z Int.
Twoje „rozwiązanie” jest naprawdę okropne. Ten ! oznacza „Jestem pewien, że to nawrócenie się powiedzie. Jeśli tak się nie stanie, awarię aplikacji”. niech d = Podwójne ('1234x')! po prostu się zawiesi. Celowo. Ponieważ nie sprawdziłeś zero, a to było zero.
Prawidłowym sposobem jest sprawdzenie błędu. Na przykład
jeśli niech d = Double (MyValue), d > 10 {
// MojaWartość zawierała liczbę, a liczba ta jest > 10.
} w przeciwnym razie {
// MojaWartość nie zawierała liczby lub była<= 10.
}
Jeśli uważasz, że warto pisać kod, który jest bezpieczny i faktycznie działa, to Swift jest właściwym językiem.
0002378
Zawieszony
- 28 maja 2017 r.
- 24 paź 2017
gnasher729 powiedział: To nie ma pojęcia. Problem polega na tym, że OP nie wie o podstawowej funkcji Swift, czyli o wartościach opcjonalnych. Konstruktor Double(String) może oczywiście zawieść, jeśli String nie zawiera liczby. Dlatego Double (String) nie daje i nie może generować wyniku typu Double, ale jednego typu Double? , czyli opcjonalny Double. A opcjonalny Double nie może być porównywany z Int.
Czy byłeś zastraszany w szkole? Wygląda na to, że masz dość niską samoocenę, ponieważ nie mogłeś odpowiedzieć bez atakowania mnie.
To będzie moja pierwsza i ostatnia wiadomość do Ciebie. Propozycja dla Ciebie - spróbuj komunikować się w bardziej cywilny sposób, a życie będzie wspaniałe. Trzymaj się.
Greene
- 15 lipca 2015 r.
- Fort Wart
- 25 paź 2017
gnasher729 powiedział: Prawidłowym sposobem jest sprawdzenie błędu. Na przykład
jeśli niech d = Double (MyValue), d > 10 {
// MojaWartość zawierała liczbę, a liczba ta jest > 10.
} w przeciwnym razie {
// MojaWartość nie zawierała liczby lub była<= 10.
}
To jest niejednoznaczne - co jeśli wartość jest<= 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.
O wiele czystszy sposób byłby:
Kod: |__+_|
Chociaż naprawdę uważam, że MyValue powinna być przechowywana jako Double od samego początku, a NumberFormatter zaimplementowany później, aby obsłużyć wszelkie potrzebne formatowanie. Ma to znacznie mniejsze obciążenie poznawcze dla każdego, kto przeczyta kod.
zgrzytacz729
Zawieszony
- 25 listopada 2005
- 26 paź 2017
maculateConception powiedział: Czy byłeś zastraszany w szkole? Wygląda na to, że masz dość niską samoocenę, ponieważ nie mogłeś odpowiedzieć bez atakowania mnie.
To będzie moja pierwsza i ostatnia wiadomość do Ciebie. Propozycja dla Ciebie - spróbuj komunikować się w bardziej cywilny sposób, a życie będzie wspaniałe. Trzymaj się.
Cóż, nie zaatakowałem cię. Zaatakowałem Twój post, który pokazuje, że niewiele wiesz o Swifcie, i zawierał jedną bardzo niebezpieczną rekomendację. S
SAIRUS
do
- 21 sierpnia 2008
- 26 paź 2017
wstawić
- 14 kwi 2018
- 14 kwi 2018
1) '!' możesz wskazać, że ta wartość będzie dokładna int, dodając znak.
Kod: |__+_| 2) Możesz określić typ podczas definiowania wartości.
Kod: |__+_| DO
w przedsiębiorstwach
- 28 stycznia 2006
- 27 kwi 2018
ynstek powiedział: Swift, nie jesteś pewien, czy twoja wartość jest dokładnie int. Istnieją dwie opcje, aby się upewnić.
1) '!' możesz wskazać, że ta wartość będzie dokładna int, dodając znak.
Kod: |__+_| 2) Możesz określić typ podczas definiowania wartości.
Kod: |__+_|
Myślę, że Twój przykład nr 2 nie powiedzie się, ponieważ próbujesz przypisać rzut do podwójnego ciągu do zmiennej Int. Zakładasz również, że MyValue nie jest zero, co może spowodować błąd w czasie wykonywania, jeśli będzie zerowa lub nienumeryczna.
Twoje przykładowe wyjaśnienie nr 1 również nie jest właściwe. Wykrzyknik nie konwertuje wartości na Int. Rozpakowuje wartość zmiennej opcjonalnej. W twoim przykładzie otrzymasz wartość Double, a nie Int, i tylko wtedy, gdy MyValue nie będzie zero lub wartość nienumeryczna.
Popularne Wiadomości