Scala中的嵌套特征/外观

时间:2016-08-25 02:38:43

标签: scala scala.js

如果你看看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;}]
}

1 个答案:

答案 0 :(得分:3)

我会这样做。

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