[英]Can't figure out how Sangria does conversion from GraphQL type to Scala type
[英]How figure out what actual type in scala?
类型声明有一个特征。 我不知道实际的SomeType
类型是什么? 这是代码:
package someModel {
trait SomeTrait extends Serializable {
type SomeType
def id: SomeType
}
}
重要笔记
type SomeType
SomeTrait
仅出现在SomeTrait
。 不在文件中。 如果我正确理解了您的问题, SomeType
还不是实际类型,它是抽象类型member ,则是abstract,因为混合类必须为其提供实现:
trait SomeTrait extends Serializable {
type SomeType
def id: SomeType
}
class SomeClass extends SomeTrait {
type SomeType = Int
def id: SomeType = 1
}
class SomeOtherClass extends SomeTrait {
type SomeType = Long
def id: SomeType = 2L
}
对于泛型和类型成员之间的区别,有一个很棒的SO帖子
我不太了解您问题中的“实际类型”是什么意思。
如果您想知道SomeType
将会是什么,那是不可能的,因为尚未声明。
如果你问如何引用SomeType
一些SomeTrait
在编译时实例,然后只需调用foo.SomeType
其中foo
是SomeTrait
。
如果在删除类型信息的运行时需要它,则必须使实例将其携带在某些东西中。 在这里看到如何做。
我希望我有你的主意:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.