Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: stewe 25. 01. 2012, 16:14:29

Název: Message chaining a datové typy
Přispěvatel: stewe 25. 01. 2012, 16:14:29
zdravim,

na zaklade blogu od pana Novaka (http://novacisko.blog.root.cz/2012/01/25/tvorime-vlacky-nejen-v-c/) a mojho prispevku (4.) by ma zaujimalo, ci neexistuje nejaky postup v pripade, ze chcem napr. pretransformovat jeden vstup na druhy pomocou zretazenia metod. nazorna ukazka:

hexString = textEdit.getText().stringToBinaryInt().binaryIntToDecimalInt().intToHexString();

takze mame hexString urciteho typu a mame textEdit tiez nejakeho typu. uloha znie, ako vybrat / poskladat / zretazit metody tak, aby som z jedneho typu dostal typ druhy. ide o to zautomatizovat proces "hladania" spravnej kombinacie metod, ktore ma povedu k spravnemu vysledku.

dajme tomu, ze by som mal automaticky javagoogle ( :) ) do ktoreho dam jeden aj druhy typ a vypluje mi to sekvenciu metod ktore treba pouzit aby som to pretransformoval.

ja myslim ze by to nebolo take zlozite, len treba prejst objekty a ich metody a zistit co ktora vracia a zretazit to s metodami, ktore prave taku metodu na vratenom objekte volaju ...

haskell je v tomto velmi dobry, existuje taka vecicka ze "hoogle (http://www.haskell.org/hoogle/?hoogle=%28a+-%3E+b%29+-%3E+%5ba%5d+-%3E+%5bb%5d)". zadate typ a vylezu vam funkcie takeho isteho typu ...
Název: Re:Message chaining a datové typy
Přispěvatel: Kit 25. 01. 2012, 20:27:40
Sice netuším, v jakém jazyku to chceš, ale obecně by každá metoda z vláčku měla vracet objekt určité třídy obsahující následující metodu.
Název: Re:Message chaining a datové typy
Přispěvatel: Ivorne 25. 01. 2012, 22:13:51
Citace: Arnold Rimmer
Otázka zní: "Chceme to vůbec?"

Mám obavy, že myšlenka je to zajímavá, ale podle mě úplně k ničemu. Nejsem si jistý, jestli existuje takové množství datových typů, aby nebylo jednodušší to prostě vypsat. Krom toho se výsledek může značně lišit podle toho, jakou cestu zvolíš. Takže vzniká problém v tom, jak se má algoritmus rozhodnout v tom, jakou cestu zvolit a jak mu případně zdělit, že chci jinou cestu.

Ale jinak nejjednodušší řešení by IMHO bylo prostě nadefinovat nějaké základní konverze a pak ručně nadefinovat i ostatní konverze použítím již existujících konverzí:

Kód: [Vybrat]
Hexadecimal::toString()
{
   return this->toDecimal()->toString();
}

Ale je tu prostě ten problém, že se ti teď všechny HEX budou zobrazovat decimálně. Reálně se ale může stát, že někdy budeš požadovat HEX výpis a někdy DEC výpis.