Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
scala方法的返回类型_Scala - Fatal编程技术网

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=的右侧

在Scala中有可能做这样的事情吗

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)
这样的函数将在运行时工作。因此,如果我们可以使用反射获取运行时类型,那么即使使用,也不可能进行任何此类别名分配。