根据文档,您可以引用<object.property>格式中对象的属性。我希望这能让我检查字符串的长度,但它似乎不起作用。我认为这是因为该方法是String.length(),并且根据文档,如果我执行类似的操作<mystr.length>,它将查找一个名为的方法getLength()和一个名为的字段length,但它从不查找一个名为的方法length()。我在 Scala REPL 中通过这个快速检查进行了验证:
scala> import org.stringtemplate.v4._; import scala.collection.JavaConverters._;
import org.stringtemplate.v4._
import scala.collection.JavaConverters._
scala> new ST("<xs:{ x | <x>:<x.length> }>").add("xs", List("hello", "goodbye").asJava).render
res0: String = "hello: goodbye: "
scala> case class S(val s:String) { def getLength = s.length }
defined class S
scala> new ST("<xs:{ x | <x>:<x.length> }>").add("xs", List("hello", "goodbye").map(S).asJava).render
res1: String = "S(hello):5 S(goodbye):7 "
因此,如果 Strings 有一个getLength()方法或一个length字段,它就会起作用......
有没有更简单的方法来获取字符串长度?也许是内置的 StringTemplate 函数,或者我不知道的其他方法?