Quote (Jason89 @ 25 Oct 2014 21:36)
Raw verzió, még lehet rajta csiszolni.
többnyire értem, kis guglizás után
the power of templates...

a mi "szörnyetegünk" valami ilyesmi lett elméleti síkon, most le is pötyögtem
asszem Java még csak erre se lenne képes, és bosszant is hogy nem tudják ezek a nyelvek (mert ami most következik az a "nem tudás" kategória, sokkal inkább "cheating death")
Code
public class MyClass
{
public Color Color { get; private set; }
public Size Size { get; private set; }
public int Scale { get; private set; }
public Func<Color, Func<Size, Action<int>>> With()
{
return WithColor;
}
private Func<Size, Action<int>> WithColor(Color color)
{
Color = color;
return WithSize;
}
private Action<int> WithSize(Size size)
{
Size = size;
return WithScale;
}
private void WithScale(int scale)
{
Scale = scale;
}
}
usage is like
Code
var myClass = new MyClass();
myClass.With()
.Invoke(Color.Red)
.Invoke(new Size(10, 10))
.Invoke(5);
1) undorító, nem szabad ilyet leírni
2) sorrendhez kötött
3) nem lehet kihagyni egy paramétert (ha mondjuk itt nem akarnék Size-t adni, de Scale-t meg igen) ; csak akkor ha az összes permutációt szintén le kéne programozni
igazából T4 template generatorral simán meg tudnám csinálni, az class.gen.cs kódot köpne ki az összes permutációra
csak mondjuk 4-5 methodnál már 1000 soros lenne a class

de persze akkor ha két paraméter van ami int, akkor bukott az egész
UNLESS, minden property kap saját típust is, IntSize, IntScale, IntRadius

szeretek elrugaszkodni a valóságtól, na..
de amúgy még a cpp-s templates megoldás is lehet macerás N paraméternél, el kell rajta gondolkozni ott is -- ha jól látom?
This post was edited by Anarkin on Oct 25 2014 02:50pm