- fabian-bros blogja
- A hozzászóláshoz be kell jelentkezni
- 1561 megtekintés
Hozzászólások
"ha már ennyire objektum-orientáltak vagyunk"
Java alapon mit vártál...?
--
"Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live." John F. Woods
Get dropbox account now!
- A hozzászóláshoz be kell jelentkezni
Mondjuk simán el tudom képzelni, hogy van jobb megoldás. Nem valami elegáns a kód. Switch-et használ egyetlen egy case-zel. Mi a baj az if-fel? de azért break-el a végén m(
De ez volt linkelve az eclipse oldalról.
--------------------------------------
Unix isn't dead. It just smells funny.
- A hozzászóláshoz be kell jelentkezni
ha nem ertesz hozza, ne fikazd.
- A hozzászóláshoz be kell jelentkezni
Nem tudtam, hogy csak akkor kérdőjelezhetsz meg bármilyen megoldást is, ha három PHD-d van a témában.
Nekem ez a vogonita software design sosem volt a világom, de akinek tetszik, legyen vele boldog.
Nem betiltottam, csak nemtetszésemet nyilvánítottam a blogomon.
--------------------------------------
Unix isn't dead. It just smells funny.
- A hozzászóláshoz be kell jelentkezni
Nem kell ahhoz 3 PHD, hogy felfogd, hogy a Float.parseFloat() az dob exceptiont helyetted, hogy ha nem érvényes formátumú stringet kapsz át, szemben az atof()-el, ahol még előtte neked külön ellenőrizned kell. (Azt valahogy nagyon sok C kódoló el szokta felejteni, hogy egy Java/.NET végez rengeteg olyan ellenőrzést is, amit sok C kóder szimplán figyelmen kívül hagy, egy kényelmes "úgy se lesz olyan eset" felkiáltással. Aztán, mikor mégis, akkor meg megy a pislogás, hogy fagy a program.)
A .toString() mondjuk tényleg nem tudom, hogy miért kell, igaz nem tudom mit ad vissza a text.getText(). (Bár meglepődnék, ha nem String-et.)
Arról nem is beszélve, hogy jelen esetben te egy vakvilágból kapott char* -t hasonlítasz össze azzal, amikor egy konkrét GUI elemtől kéred el még külön a szöveget. Azt meg nem tudom, mi alapján várod, hogy neked float-ot adjon vissza String helyett.
Az xtoy() függvények meg különösen aranyosak lesznek akkor, mikor lesz vagy néhányszáz adattípusod, ami között konvertálni kell.
Szóval valamennyire igaza van NagyZ-nek: érteni kellene, hogy mit is írsz le és miért nem ugyanaz a kettő.
----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™
- A hozzászóláshoz be kell jelentkezni
"A .toString() mondjuk tényleg nem tudom, hogy miért kell, igaz nem tudom mit ad vissza a text.getText(). (Bár meglepődnék, ha nem String-et.)"
Ha a metódus stringet vár, nem hívódik meg a toString() egyébként is? Mint egyfajta automatikus típuskonverzió.
"Az xtoy() függvények meg különösen aranyosak lesznek akkor, mikor lesz vagy néhányszáz adattípusod, ami között konvertálni kell."
+1
A java nyelvnek fel lehet róni, hogy kevés syntax sugart tartalmaz, emiatt bizonyos esetekben nehezen olvasható kód keletkezik (pl. kilométer hosszú metódusláncolatok), de egy java méretű platform karbantarthatósága namespacek és statikus osztályok nélkül nehezen oldható meg hosszú távon.
- A hozzászóláshoz be kell jelentkezni
"Ha a metódus stringet vár, nem hívódik meg a toString() egyébként is? Mint egyfajta automatikus típuskonverzió."
Nem. Szerintem kevered azzal, hogy a java.io.PrintStream (aminek egy jol ismert peldanya a System.out) printn(Object), println(Object) metodusai belul meghivjak az Object.toString() illetve ennek override-olt metodusat.
Amugy az android TextView.getText() egy CharSequence-t ad vissza, nem Stringet, szerintem azert, mert teljesitmenyben ez jobb: a String immutable osztaly, igy ha 1-1 karakter valtozik uj memoriafoglalasra van szukseg, mig a CharSequence egy read-only interface karaktersorozatokra, de a tenyleges implementacioja lehet mutable.
Amugy a jo megoldas TextWatcher hasznalata.
- A hozzászóláshoz be kell jelentkezni
Kevertem is meg nem is. String konkatenációkor is működik, de nyilvánvalóan az is object-et vár és meghívja rá a toString()-et.
- A hozzászóláshoz be kell jelentkezni
pontositanek: a + operator ugy van megirva, hogy ha a bal oldala String, akkor a jobb oldalon barmi lehet, .toString() lesz belole (vagy az sem, ha String).
mar nem tudom hol van a JLS-ben, de meg lehet nezni. :)
- A hozzászóláshoz be kell jelentkezni
Mit minden nyelvben amiben van operator overloading. :)
- A hozzászóláshoz be kell jelentkezni
Szopo, hogy a Javaban pont nincs. :)
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
Attól, hogy te nem overloadolhatsz operátorokat, attól még van benne. Vagy te minek neveznéd a String + operátorát?
- A hozzászóláshoz be kell jelentkezni
Automatikus tipuskonverzionak? A String eseteben ez mondjuk kicsit specialisan mukodik, de ettol meg az.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
Adott két string típusú objektumunk, amelyből a + operátor létrehoz egy harmadik string típusú objektumot. Hol van itt típuskonverzió? :)
----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™
- A hozzászóláshoz be kell jelentkezni
Ott, hogy a jobb oldalon akar nem string is allhat.
class Bar {
public String toString() {
return "bar";
}
}
System.out.println("foo " + new Bar()); // foo bar
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
Ez jobb helyeken még mindig csak egy
public static operator string +(string a, object b)
{
return a + b.ToString();
}
Ahol szó nincs típuskonverzióról, csak függvényhívásról.
----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™
- A hozzászóláshoz be kell jelentkezni
Igazabol ezt szerettem volna en is irni.
Az tenyleg erdekes kerdes, hogy a getText() utan miert kell toString(). Akkor az nem text, hanem valami mas.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
Azert, mert az egy CharSequence-t ad vissza.
- A hozzászóláshoz be kell jelentkezni
Ez szimpi. Verbose-ság továbbra sem.
Naiv kérdés: Mitől jobb egy osztályban lévő statikus függvény, mint egy sima függvény? (Mi a racionálé, hogy nincsenek?)
És a parseFloat is csak stringről float-ra konvertál, nem?
Szerk: bocs a támadó hangnemekért, nincsenek jó napjaim
+1 kérdés: mi van, ha nem kapod el az exception-t? Akkor is meghal a progi, nem? file-név + sorszámot ír?
--------------------------------------
Unix isn't dead. It just smells funny.
- A hozzászóláshoz be kell jelentkezni
"Nem tudtam, hogy csak akkor kérdőjelezhetsz meg bármilyen megoldást is, ha három PHD-d van a témában."
Nem kell hozza, csupan erteni kene ahhoz a szakmahoz amibe a pelda alapjan belebufogsz
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
A java a jó memóriájú (ill. a "magától kódoló" IDE-t használó) emberek programozási nyelve. :)
--
zsebHUP-ot használok!
- A hozzászóláshoz be kell jelentkezni
Mondjuk én nem komálom az Androidot, de nem igazságos az összehasonlítás, hiszen a C-s eleve előnyből indul, gondolom a másiknál egy EditText van, C -snél meg egy string. Szóval inkább:
float inputValue = Float.parseFloat(text);
vs
double inputValue = atof(text);
vs.
float inputValue = [text floatValue]; // (objective-c :)
Olyan nagy különbségek láthatóan nincsenek.
- A hozzászóláshoz be kell jelentkezni
A korrekt osszehasonlitas mondjuk a GTK-val lehetett volna, hiszen az C nyelvu.
Ott ugy tudod ezt megoldani, hogy: van egy GtkTextView-d meg egy GtkTextBuffered.
http://developer.gnome.org/gtk3/3.4/GtkTextView.html
http://developer.gnome.org/gtk3/3.4/GtkTextBuffer.html
Elobb a gtk_text_view_get_buffer() hivassal kapsz egy pointert egy GtkTextBuffer strukturara, amibol egy gtk_text_buffer_get_text() hivassal kapsz egy gchar*-ot, viszont a gchar = char a typedef alapjan.
Na, ezt ezutan kell az atof()-nak beadni.
A gtk_text_view_get_buffer()-nek 1 (maga a GtkTextView pointere), a gtk_text_buffer_get_text()-nek 4 parametere van (a GtkTextBuffer pointere, ket GtkTextIter a kezdo es vegkarakter meghatarozasara, es egy gboolean).
Na, akkor melyik is az egyszerubb?
- A hozzászóláshoz be kell jelentkezni
Jó akkor tegyük mellé a Qt-t is ahol:
bool ok = false;
double inputValue = ui->lineEdit.text().toDouble(&ok);
és ezzel megkerültük a kivételeket.
- A hozzászóláshoz be kell jelentkezni
De ez OOP ;)
----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™
- A hozzászóláshoz be kell jelentkezni
Az ObjC :P
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni