Diskuze: Obecné pojmy

C# .NET .NET (C# a Visual Basic) Obecné pojmy American English version English version

Avatar
Tomáš Švejnoha:

Ahoj,
měl bych dotaz. Pracuji na prezentaci do školy a chtěl bych se zeptat, jestli je nějaký rozdíl mezi přetypováním a parsováním. Myslím si, že jsou to dva pojmy pro označení toho samého, ale chtěl bych se ujistit, než to tam napíšu. :)

 
Odpovědět 16. března 16:38
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na Tomáš Švejnoha
patrik.valkovic:

Parsing is the process of analysing a string of symbols, either in natural language or in computer languages, conforming to the rules of a formal grammar.
Parsuje se vždy nějaký text. Jak je zmíněno, podle pravidel gramatiky (k tomu je ale potřeba více teoretických znalostí).
Přetypování se provádí mezi typy (například z int do float).

Editováno 16. března 17:04
Nahoru Odpovědět 16. března 17:04
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Tomáš Švejnoha:

No to jo, ale podle z tohoto jsou to pochopil krapet jinak :)
http://www.itnetwork.cz/…a-parsovani/

 
Nahoru Odpovědět 16. března 17:08
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na Tomáš Švejnoha
patrik.valkovic:

To je samozřejmě špatně. Definice je výše (z wikipedie) - musí se jednat o "řetězec symbolů". Když chceš z floatu dostat int, nenapíšeš "Int32.Parse(ne­jakyFloat);" ale "nejakyInt = (int)int;" popřípadě "nejakyInt = nejakyFloat.To­Int32();"
viz https://msdn.microsoft.com/….110%29.aspx a https://msdn.microsoft.com/….110%29.aspx.
Skutečně se jedná o dva rozdílné pojmy.

Nahoru Odpovědět 16. března 17:19
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
patrik.valkovic
Šéfredaktor
Avatar
patrik.valkovic:

https://social.msdn.microsoft.com/…g-vs-parsing?…

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět 16. března 17:24
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Tomáš Švejnoha:

Díky, už to (asi) chápu.
Ale proč je tedy Convert.ToInt32 a int.Parse, když pomocí toho dosáhnu stejného výsledku?

 
Nahoru Odpovědět 16. března 17:25
Avatar
Tomáš Švejnoha:

Díky moc, vše pochopeno :)

 
Nahoru Odpovědět 16. března 17:29
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na Tomáš Švejnoha
patrik.valkovic:

Convert je trošku zavádějící, ale v poznámkách je napsáno, že pouze interně volá Int32.Parse, takže je to ekvivalentní :D

Nahoru Odpovědět 16. března 17:34
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Odpovídá na Tomáš Švejnoha
Petr Čech (czubehead):

Jsou to dvě naprosto rozdílné věci, schválně si zkus přetypovat číslo ve stringu na int

int i=(int)"6";

Ani tě to nenechá zkompilovat.
Parsování znamená, že převedeš něco na něco jiného, ikdyž normálně jsou obě věci neslučitelné- třeba xml soubor převedeš na nějaký objekt uživatele. S parsováním se setkáváme i v neobjektových jazycích.

Přetypování funguje pouze v OOP a jde o to, že objekt, který převádíš na něco jiného ve skutečnosti je tím, na co ho chceš převést, ale kompilátor o tom neví. Použiješ to třeba tak, že si uložíš uživatele do typu object, ale chceš s ním dále pracovat. Jenže kompilátor neví, že v proměnné typu object je ve skutečnosti uživatel, proto to explicitně specifikuješ přetypováním.

object o=new User();
//nějaký kód
User b=(User)o;

Problém VB.NET neumím, ale co jsem tak pochopil z toho krátkého článku, je to dost matoucí, pokud neumíš OOP již z dřívějška. Nicméně platí, že to jsou 2 naprosto odlišné věci.
VB.NET jen očividně umožňuje zkrácený zápis pro parsování.

Nahoru Odpovědět  +2 16. března 17:36
Why so serious? -Joker
Avatar
Tomáš Švejnoha:

Tak teď už mi to je naprosto jasné. OOP jsem se učil v zdejším seriálu ;)

 
Nahoru Odpovědět 16. března 18:00
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.