我想编写一个根据其类型参数行为不同的函数。 我想要的一个简单示例如下所示:
def f[Int] = "I'm an int"
def f[Float] = "I'm a float"
def f[Burger] = "You want fries with that?"
这在Scala中是否可行,或者我是否需要某种解决方法?
答案 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/。宏是在编译期间运行的自定义函数,可以基于编译时计算动态生成代码。