Message chaining a datové typy

stewe

Message chaining a datové typy
« kdy: 25. 01. 2012, 16:14:29 »
zdravim,

na zaklade blogu od pana Novaka 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". zadate typ a vylezu vam funkcie takeho isteho typu ...
« Poslední změna: 25. 01. 2012, 17:47:34 od Petr Krčmář »


Kit

Re:Message chaining a datové typy
« Odpověď #1 kdy: 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.

Ivorne

Re:Message chaining a datové typy
« Odpověď #2 kdy: 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.