我想做这样的事情:
scala> "Hello world"(this.length -1)
res30: Char = d
这显然不起作用,因为我没有先将它存储为val来引用“Hello world”。
有没有办法实现这个目标?
答案 0 :(得分:22)
如果你只想要字符串的最后一个字符,你可以这样做:
scala> "Hello World".last
res0: Char = d
对于一般问题,您可能希望使用正向管道运算符,如下所示:
scala> "Hello World" |> { t => t(t.length - 1) }
res1: Char = d
您可以定义正向管道运算符,如下所示,或使用Scalaz中可用的那个。
scala> implicit def anyWithPipe[A](a: A) = new {
| def |>[B](f: A => B): B = f(a)
| }
anyWithPipe: [A](a: A)java.lang.Object{def |>[B](f: (A) => B): B}
答案 1 :(得分:3)
您无法引用文字本身,但您可以使用该块的本地临时变量创建一个块。
scala> val lastChar = { val tmp = "Hello World"; tmp(tmp.length - 1) }
lastChar: Char = d
scala> tmp
<console>:8: error: not found: value tmp