我可以像在C ++模板专业化中那样专门化Scala中的函数类型参数吗?

时间:2012-07-27 02:00:39

标签: scala types parameters

我想编写一个根据其类型参数行为不同的函数。 我想要的一个简单示例如下所示:

def f[Int] = "I'm an int"
def f[Float] = "I'm a float"
def f[Burger] = "You want fries with that?"

这在Scala中是否可行,或者我是否需要某种解决方法?

2 个答案:

答案 0 :(得分:2)

另一种可能的方法是使用证据:

def f[T](t:T)(implicit ev: T<:<Float) {

// float version 

}

def f[T](t:T)(implicit ev: T<:<Int) {

// int version 

}

但是我建议输入类作为更优雅的解决方案

答案 1 :(得分:1)

您可能希望查看宏:http://scalamacros.org/。宏是在编译期间运行的自定义函数,可以基于编译时计算动态生成代码。