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]]
}