On Monday, 1 July 2013 at 16:33:56 UTC, Ary Borenszweig wrote:
I'll give you an example:
# var can be an Int or String
def foo(var)
var = var.to_s
# do something with var, which is now guaranteed to be a
string
end
I can call it like this:
foo(1)
foo("hello")
If I had to put types, I would end up doing of of these:
1.
void foo(int var) {
foo(to!string(var))
}
void foo(string var) {
// do something with var
}
2.
void foo(T)(T var) {
string myVar;
static if (is(T == string)) {
myVar = var;
} else if (is(T == int)) {
myVar = to!string(var)
} else {
static assert(false);
}
// do something with myVar
}
Why not this?
void foo(T)(T var)
{
auto myVar = var.to!string;
//do something with myVar string
}