Scala:文字引用本身可以吗?

Rah*_*hul 5 scala

我想做这样的事情:

scala> "Hello world"(this.length -1)
res30: Char = d
Run Code Online (Sandbox Code Playgroud)

这显然不起作用,因为我不能首先将它存储为val来引用"Hello world".

有没有办法实现这个目标?

mis*_*tor 22

如果你只想要字符串的最后一个字符,你可以这样做:

scala> "Hello World".last
res0: Char = d
Run Code Online (Sandbox Code Playgroud)

对于一般问题,您可能希望使用正向管道运算符,如下所示:

scala> "Hello World" |> { t => t(t.length - 1)  }
res1: Char = d
Run Code Online (Sandbox Code Playgroud)

您可以定义正向管道运算符,如下所示,也可以使用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}
Run Code Online (Sandbox Code Playgroud)