Forumai

„Mac“ dvejetainis operatorius „>“ negali būti taikomas „Double?“ tipo operandams. ir 'Int'

abcdefg12345

Originalus plakatas
2013 m. liepos 10 d
  • 2017 m. spalio 21 d
Bandau turėti „if“ teiginį, kad patikrinčiau, ar dviguba eilutės reikšmė yra didesnė nei 10, bet noriu gauti klaidą „Dvejetainis operatorius >“ negali būti taikomas „Double?“ tipo operandams. ir „Int“ kas nors žino, ką aš darau ne taip.

greitas 4
Kodas: |_+_|
aš naudoju kintamąją eilutę, nes man reikia, kad ji būtų eilutė, kad galėčiau ją formatuoti vėliau, apibrėžiau kaip
Kodas: |_+_|

abcdefg12345

Originalus plakatas
2013 m. liepos 10 d


  • 2017 m. spalio 21 d
ištaisė pridedant kitą kintamąjį
Kodas: |_+_|
Reakcijos:960 dizainas

0002378

Sustabdytas
2017 m. gegužės 28 d
  • 2017 m. spalio 23 d
Manau, kad Swift, kaip kalba, kartais yra juokinga, ypač. ateina iš Java programavimo. Ir jūs pateikėte vieną geriausių to pavyzdžių.

Ir nors pasirinktiniai turi savo privalumų, jie taip pat verčia mane daužyti kompiuterį į viršutinius šiukšliadėžės kraštus.

Tačiau ten, kur Swift iš tikrųjų puola, yra uždarymo skyrius... o taip! „Java“ taip pat turi juos dabar, bet ...

Ir, žinoma, tai, kad „Swift“ yra ne toks griežtas nurodydamas tipus ir tuos įkyrius kabliataškius... nuostabu!

Reakcijos:abcdefg12345

0002378

Sustabdytas
2017 m. gegužės 28 d
  • 2017 m. spalio 24 d
Oi, palaukite, dabar, kai pažvelgiu į jūsų kodą, matau, kad jūsų „Double(string)“ vertė yra „Double?“, kuri yra neprivaloma.

Jums nereikia naujo kintamojo. Galite tiesiog pridėti „! į savo Double(stygą), ir jis veiks.

Manau, klydau, kad Swift šiuo atveju buvo kvaila. Tačiau aš susidūriau su daugybe tokių kompiliatorių skundų (negaliu palyginti dviejų skirtingų skaičių tipų).

Greene

2015 m. liepos 15 d
Fort Vertas
  • 2017 m. spalio 24 d
Manau, kad švaresnis ir greitesnis sprendimas būtų saugoti „MyValue“ kaip „double“ arba „int“ (atrodo, kad tai yra). Tada formatavimui tvarkyti galite naudoti NumberFormatter.

Arba galite naudoti pasirenkamą įrišimą, kad išvyniotumėte vertę. Pirmiausia išbandyčiau vieną iš šių metodų, prieš pradėdamas naudoti jėgos išvyniojimą

gnasher729

Sustabdytas
2005 m. lapkričio 25 d
  • 2017 m. spalio 24 d
maculateConception sakė: Manau, kad Swift, kaip kalba, kartais yra juokinga, ypač. ateina iš Java programavimo. Ir jūs pateikėte vieną geriausių to pavyzdžių.
Tai gana beprasmiška. Problema ta, kad OP nežino pagrindinės „Swift“ funkcijos, ty pasirenkamos reikšmės. Konstruktorius Double(String) akivaizdžiai gali sugesti, jei eilutėje nėra skaičiaus. Štai kodėl Double (String) neduoda ir negali sukurti Double tipo rezultato, o vieno tipo Double? , tai yra pasirenkamas dvigubas. Ir pasirenkamas Dvivietis negali būti lyginamas su Int.

Jūsų „sprendimas“ yra tikrai labai baisus. ! reiškia „Esu tikras, kad ši konversija bus sėkminga“. Jei ne, sugadinkite programą. tegul d = dvigubas ('1234x')! tiesiog sugrius. Tyčia. Nes tu nepatikrinei nulio, o buvo nulis.

Teisingas būdas yra patikrinti, ar nėra klaidos. Pavyzdžiui

jei tegul d = dvigubas (mano vertė), d > 10 {
// „MyValue“ yra skaičius, o skaičius yra > 10.
} Kitas {
// „MyValue“ nebuvo skaičiaus arba skaičius buvo<= 10.
}

Jei manote, kad verta parašyti kodą, kuris yra saugus ir iš tikrųjų veikia, tada „Swift“ yra tinkama kalba.
Reakcijos:įmonės ir ajthom90

0002378

Sustabdytas
2017 m. gegužės 28 d
  • 2017 m. spalio 24 d
gnasher729 pasakė: Tai visai neaišku. Problema ta, kad OP nežino pagrindinės „Swift“ funkcijos, ty pasirenkamos reikšmės. Konstruktorius Double(String) akivaizdžiai gali sugesti, jei eilutėje nėra skaičiaus. Štai kodėl Double (String) neduoda ir negali sukurti Double tipo rezultato, o vieno tipo Double? , tai yra pasirenkamas dvigubas. Ir pasirenkamas Dvivietis negali būti lyginamas su Tarpt.

Ar iš jūsų buvo priekabiaujama mokykloje? Atrodo, kad tu turi gana žemą savigarbą, nes negalėjai atsakyti manęs neužpuldamas.

Tai bus pirmas ir paskutinis mano bendravimas su jumis. Pasiūlymas jums – pabandykite bendrauti pilietiškiau, ir gyvenimas bus puikus. Pasirūpink.

Greene

2015 m. liepos 15 d
Fort Vertas
  • 2017 m. spalio 25 d
gnasher729 pasakė: teisingas būdas yra klaidos tikrinimas. Pavyzdžiui

jei tegul d = dvigubas (mano vertė), d > 10 {
// „MyValue“ yra skaičius, o skaičius yra > 10.
} Kitas {
// „MyValue“ nebuvo skaičiaus arba skaičius buvo<= 10.
}

Tai dviprasmiška – o jei vertė yra<= 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.

Daug švaresnis būdas būtų:

Kodas: |_+_|
Nors tikrai manau, kad „MyValue“ nuo pat pradžių turėtų būti saugomas kaip „Double“, o vėliau įdiegtas „NumberFormatter“, kad būtų galima apdoroti bet kokį reikalingą formatavimą. Tai turi daug mažesnę pažinimo naštą tiems, kurie skaito kodą.
Reakcijos:įmonėse

gnasher729

Sustabdytas
2005 m. lapkričio 25 d
  • 2017 m. spalio 26 d
maculateConception pasakė: ar iš jūsų buvo priekabiaujama mokykloje? Atrodo, kad tu turi gana žemą savigarbą, nes negalėjai atsakyti manęs neužpuldamas.

Tai bus pirmas ir paskutinis mano bendravimas su jumis. Pasiūlymas jums – pabandykite bendrauti pilietiškiau, ir gyvenimas bus puikus. Pasirūpink.

Na, aš tavęs nepuoliau. Užpuoliau jūsų įrašą, kuris parodo, kad jūs labai mažai žinote apie „Swift“, ir įtraukiau vieną labai pavojingą rekomendaciją. S

SAIRUS

į
2008 m. rugpjūčio 21 d
  • 2017 m. spalio 26 d
Aš saugoju daugumą kartų, bet jei kiekviena klasės funkcija saugo tą patį kintamąjį... galbūt norėsite persvarstyti pradinę sąsają.

Įdėti

2018 m. balandžio 14 d
  • 2018 m. balandžio 14 d
Swift, nesate tikras, kad jūsų vertė yra tiksliai int. Yra dvi galimybės įsitikinti.
1) '!' galite nurodyti, kad ši reikšmė bus tiksli int, pridėdami ženklą.
Kodas: |_+_| 2) Apibrėždami reikšmę galite nurodyti tipą.
Kodas: |_+_| KAM

įmonėse

2006 m. sausio 28 d
  • 2018 m. balandžio 27 d
ynstek pasakė: Swift, nesate tikras, kad jūsų vertė yra tiksliai tarpinė. Yra dvi galimybės įsitikinti.
1) '!' galite nurodyti, kad ši reikšmė bus tiksli int, pridėdami ženklą.
Kodas: |_+_| 2) Apibrėždami reikšmę galite nurodyti tipą.
Kodas: |_+_|

Manau, kad jūsų 2 pavyzdys nepavyks, nes bandote priskirti eilutę Int kintamojo dubliui. Be to, darote prielaidą, kad MyValue nėra nulis, o tai gali sukelti vykdymo klaidą, jei ji yra nulis arba ji nėra skaitinė.

Jūsų paaiškinimo Nr. 1 pavyzdys taip pat nėra teisingas. Šauktukas nekeičia reikšmės į Int. Jis išskleidžia pasirenkamo kintamojo reikšmę. Jūsų pavyzdyje turėtumėte gauti dvigubą reikšmę, o ne Int, ir tik tuo atveju, jei MyValue nebūtų nulis arba ne skaitinė reikšmė.