Scala 中的嵌套特征/外观
Nested traits / facade in Scala
如果你看一下 Reddit api 你会得到这样的信息:
{"children": [{"data":{"permalink": "a", "url": "b", "etc": "..."}}]
我将如何定义代表它的 Scala 特征?
沿着这些思路可能......?
trait RedditSubreddit extends js.Object {
val children: Array[trait {val permalink: String; val url: String;}]
}
我会这样做。
trait RedditPost extends js.Object {
val permalink: String
val url: String
}
trait RedditSubreddit extends js.Object {
val children: js.Array[RedditPost]
}
虽然,考虑到 Reddit 允许任意嵌套子帖子,API 可能更符合这个:
trait RedditPost extends js.Object {
val permalink: String
val url: String
val children: js.Array[RedditPost]
}
或者您可能想添加一个 UndefOr
以防该字段并非始终设置:
trait RedditPost extends js.Object {
val permalink: String
val url: String
val children: js.UndefOr[js.Array[RedditPost]]
}
如果你看一下 Reddit api 你会得到这样的信息:
{"children": [{"data":{"permalink": "a", "url": "b", "etc": "..."}}]
我将如何定义代表它的 Scala 特征?
沿着这些思路可能......?
trait RedditSubreddit extends js.Object {
val children: Array[trait {val permalink: String; val url: String;}]
}
我会这样做。
trait RedditPost extends js.Object {
val permalink: String
val url: String
}
trait RedditSubreddit extends js.Object {
val children: js.Array[RedditPost]
}
虽然,考虑到 Reddit 允许任意嵌套子帖子,API 可能更符合这个:
trait RedditPost extends js.Object {
val permalink: String
val url: String
val children: js.Array[RedditPost]
}
或者您可能想添加一个 UndefOr
以防该字段并非始终设置:
trait RedditPost extends js.Object {
val permalink: String
val url: String
val children: js.UndefOr[js.Array[RedditPost]]
}