abcdefg12345
Původní plakát- 10. července 2013
- 21. října 2017
rychlý 4
Kód: |_+_|
Používám proměnný řetězec, protože potřebuji, aby to byl řetězec, abych ho mohl později naformátovat, definoval jsem to jako
Kód: |_+_|
abcdefg12345
Původní plakát- 10. července 2013
- 21. října 2017
Kód: |_+_|
0002378
Pozastaveno
- 28. května 2017
- 23. října 2017
A i když volitelné příslušenství má své výhody, nutí mě také rozbít svůj počítač o horní okraje popelnice.
Kde však Swift opravdu nakopává prdel, je oddělení uzávěrů... ach jo! Java už je má taky, ale...
A samozřejmě skutečnost, že Swift je méně přísný v deklaraci typů a těch otravných středníků ... úžasné!
reakce:abcdefg12345
0002378
Pozastaveno
- 28. května 2017
- 24. října 2017
Nepotřebujete novou proměnnou. Můžete jen přidat '!' na váš Double(string) a bude to fungovat.
Asi jsem se mýlil v tom, že Swift byla v tomto případě hloupá. Ale setkal jsem se s mnoha případy takových stížností kompilátoru (neschopných porovnat dva různé číselné typy).
Greene
- 15. července 2015
- hodnota pevnosti
- 24. října 2017
Nebo můžete použít volitelnou vazbu k rozbalení hodnoty. Před použitím silového rozbalení bych nejprve vyzkoušel jednu z těchto metod
gnasher729
Pozastaveno
- 25. listopadu 2005
- 24. října 2017
maculateConception řekl: Myslím, že Swift jako jazyk je občas docela k smíchu, zejm. pocházející z programování v Javě. A uvedl jste jeden z nejlepších příkladů toho.To je docela bezradné. Problém je v tom, že OP nezná základní vlastnost Swiftu, kterou jsou volitelné hodnoty. Konstruktor Double(String) může zjevně selhat, pokud řetězec neobsahuje číslo. To je důvod, proč Double (String) nevytváří a nemůže vytvářet výsledek typu Double, ale výsledek typu Double? , to je volitelný Double. A volitelný Double nelze srovnávat s Int.
Vaše 'řešení' je opravdu, ale opravdu hrozné. ! znamená 'Jsem si jistý, že tato konverze bude úspěšná. Pokud se tak nestane, zrušte aplikaci. nechť d = Double ('1234x')! prostě havaruje. Záměrně. Protože jsi nezkontroloval nulu a byla nula.
Správným způsobem je kontrola chyby. Například
jestliže d = Double (MyValue), d > 10 {
// MojeHodnota obsahovala číslo a toto číslo je > 10.
} jinak {
// MojeHodnota neobsahovala číslo nebo číslo obsahovalo<= 10.
}
Pokud si myslíte, že stojí za to napsat kód, který je bezpečný a skutečně funguje, pak je Swift tím správným jazykem.
0002378
Pozastaveno
- 28. května 2017
- 24. října 2017
gnasher729 řekl: To je docela bezradné. Problém je v tom, že OP nezná základní vlastnost Swiftu, kterou jsou volitelné hodnoty. Konstruktor Double(String) může zjevně selhat, pokud řetězec neobsahuje číslo. To je důvod, proč Double (String) nevytváří a nemůže vytvářet výsledek typu Double, ale výsledek typu Double? , to je volitelný Double. A volitelný Double nelze srovnávat s Int.
Byl jsi ve škole šikanován? Zdá se, že máš docela nízké sebevědomí, protože jsi nedokázal odpovědět, aniž bys na mě zaútočil.
Toto bude moje první a poslední komunikace s vámi. Návrh pro vás – zkuste komunikovat civilněji a život bude skvělý. Opatruj se.
Greene
- 15. července 2015
- hodnota pevnosti
- 25. října 2017
gnasher729 řekl: Správný způsob je kontrola chyby. Například
jestliže d = Double (MyValue), d > 10 {
// MojeHodnota obsahovala číslo a toto číslo je > 10.
} jinak {
// MojeHodnota neobsahovala číslo nebo číslo obsahovalo<= 10.
}
To je nejednoznačné - co když hodnota je<= 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.
Mnohem čistší způsob by byl:
Kód: |_+_|
I když si opravdu myslím, že MyValue by mělo být od začátku uloženo jako Double a NumberFormatter implementován později, aby zvládl jakékoli formátování, které je potřeba. To má mnohem nižší kognitivní zátěž pro toho, kdo skončí čtením kódu.
gnasher729
Pozastaveno
- 25. listopadu 2005
- 26. října 2017
maculateConception řekl: Byl jsi ve škole šikanován? Zdá se, že máš docela nízké sebevědomí, protože jsi nedokázal odpovědět, aniž bys na mě zaútočil.
Toto bude moje první a poslední komunikace s vámi. Návrh pro vás – zkuste komunikovat civilněji a život bude skvělý. Opatruj se.
No, nenapadl jsem tě. Napadl jsem váš příspěvek, který ukazuje, že o Swiftovi víte velmi málo, a uvedl jsem jedno velmi nebezpečné doporučení. S
SAIRUS
na
- 21. srpna 2008
- 26. října 2017
vložit
- 14. dubna 2018
- 14. dubna 2018
1) '!' přidáním značky můžete označit, že tato hodnota bude přesná int.
Kód: |_+_| 2) Při definování hodnoty můžete určit typ.
Kód: |_+_| NA
atmenterprises
- 28. ledna 2006
- 27. dubna 2018
ynstek řekl: Swift, není si jistý, že vaše hodnota je přesně int. Existují dvě možnosti, jak se ujistit.
1) '!' přidáním značky můžete označit, že tato hodnota bude přesná int.
Kód: |_+_| 2) Při definování hodnoty můžete určit typ.
Kód: |_+_|
Myslím, že váš příklad č. 2 by selhal, protože se pokoušíte přiřadit přetypování řetězce na double do proměnné Int. Také předpokládáte, že MyValue není nula, což by mohlo způsobit chybu běhu, pokud by bylo nulové nebo nenumerické.
Váš příklad č. 1 vysvětlení také není správné. Vykřičník nepřevádí hodnotu na Int. Rozbalí hodnotu volitelné proměnné. Ve vašem příkladu byste skončili s hodnotou Double, nikoli s hodnotou Int, a pouze v případě, že by MojeHodnota nebyla nulová nebo nečíselná hodnota.
Populární Příspěvky