我想做这样的事情:
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)