【发布时间】:2010-06-28 15:16:26
【问题描述】:
这在 D 中不起作用:
void doSomething(auto a, auto b){
// ...
}
我只是好奇,这会起作用吗?或者这在技术上是不可能的? (或者只是愚蠢的?)
无论如何,这可以通过其他方式实现吗?我想我可以使用... 并查看参数列表,但我有点为懒惰的新手创建一个库,并希望他们能够轻松创建函数而无需真正关心数据类型。我正在考虑创建一个名为 var 的结构体
struct var{
byte type;
void* data
// ...
}
// and overload like all operators so that a lazy devver can do
var doSomething(var a, var b){
if(a == "hello")
b = 8;
var c = "No.:" ~ b ~ " says:" ~ a;
return c;
}
但是我的头已经开始疼了。而且,我有点觉得我错过了一些东西。我也痛苦地意识到这可能是模板的用途......是吗?据我所知,模板看起来像这样 (?)
void doSomething(T, U)( T a, U b){
// ...
}
但现在它看起来不再那么干净了。也许我把这一切都倒退了。也许我的困惑源于我认为auto 是一种动态类型,与var i javascript 相当,但实际上,它是别的东西?
如果它不是动态类型,这可能是另一个主题,是否可以创建一个?或者甚至可能有一个开源库可用?也许是一个 liblazy?
(PS。是的,也许懒惰的开发者就是我:)
【问题讨论】:
-
谢谢大家!不知道变种!好的,我知道变体对于 D 来说有点“越野”。
标签: dynamic-data d