scala方法的返回类型
在Scala中有可能做这样的事情吗scala方法的返回类型,scala,Scala,在Scala中有可能做这样的事情吗 def getType(name:String) = { name match { case "MyObject" => MyObject.type ... case _ => throw new Exception("Unknown") } } type o = getType("MyObject") 不,不可能。它不符合语法:getType(“MyObject”)是一个表达式,计算结果是一个值;类型o=的右侧
def getType(name:String) = {
name match {
case "MyObject" => MyObject.type
...
case _ => throw new Exception("Unknown")
}
}
type o = getType("MyObject")
不,不可能。它不符合语法:
getType(“MyObject”)
是一个表达式,计算结果是一个值;类型o=
的右侧必须是类型
在Scala中,您可以根据值拥有类型,但只能以特定的方式(路径相关类型)拥有类型,而这不是一种 为了什么?使用
对象的类型别名可以做什么?请自己尝试。你有什么问题吗?我有一个像这样的特征,我把它混入我的类中,像这样val a=newa,带有TT{type T=SomeSpecificType;val obj=someInstance}
。我想动态地做,动态混合也是一个问题。您可能可以使用宏来执行此操作,但这并不简单:。相反,为什么不使用TT{type T=MyObject.type;val obj=MyObject};案例“SomethingElse”=>代码>公平警告,这样的类型没有那么容易使用。谢谢@AlexeyRomanov。如果我错了,请纠正我-类型别名
是编译时的事情,而像getType(s:String)
这样的函数将在运行时工作。因此,如果我们可以使用反射获取运行时类型,那么即使使用,也不可能进行任何此类别名分配。