在 Scala 中使用点表示法访问内插字符串中的嵌套列表项

Accessing nested list items in an interpolated string using dot notation in Scala

我试图通过 JSON 传递一个我无法访问的值。我们有一个数据结构(显然不是我构建的,否则我可能会理解它)发送到浏览器时看起来像这样:

{Foo(Bar(List(Baz(List(G3),w))),G3,None)}

这是通过 JSON 写入方法发送的,但原始 Scala 行看起来像:

val hint = Some(s"{$question}") 其中 $question 的类型为 Foo.

我试过使用点符号以我认为可行的方式访问列表项:

val hint = Some(s"{$question.Bar.Baz})" val hint = Some(s"{$question.Bar(0).Baz(0)"})

这是最深的 G3 我想剥离并发送,但是 JSON 对象看起来像:

{Foo(Bar(List(Baz(List(G3),w))),G3,None)}.Bar.Baz{Foo(Bar(List(Baz(List(G3),w))),G3,None)}.Bar(0).Baz(0)

我一定是从根本上遗漏了这里涉及的数据结构。

我认为您只是使用了错误的语法。 $ 需要在 {} 之前,并且 {} 对于任何比变量名更复杂的表达式都是必需的:

 s"${question.bar(0).baz(0)}"