Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: 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 ...
-
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.
-
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í:
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.