我想要做這樣的事情:Scala:可以引用一個字面嗎?
scala> "Hello world"(this.length -1)
res30: Char = d
這顯然不爲工作,我不能引用「世界,你好」不首先把它作爲一個VAL。
有沒有辦法實現這個?
我想要做這樣的事情:Scala:可以引用一個字面嗎?
scala> "Hello world"(this.length -1)
res30: Char = d
這顯然不爲工作,我不能引用「世界,你好」不首先把它作爲一個VAL。
有沒有辦法實現這個?
如果你只是想字符串的最後一個字符,你可以這樣做:
scala> "Hello World".last
res0: Char = d
對於一般的問題,您可能需要使用正向管操作,如下圖所示:
scala> "Hello World" |> { t => t(t.length - 1) }
res1: Char = d
您可以如下所示定義前進管道運算符,也可以使用斯卡拉斯中可用的管道運算符。
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}
[Scalaz](http://code.google.com/p/scalaz/)是一個爲Scala提供「類型類和純功能數據結構」的庫,包括'|>'前端管道操作符。 [Google代碼上的文檔和下載](http://code.google.com/p/scalaz/),[GitHub上的源代碼](https://github.com/scalaz/scalaz)。 –
@ RoryO'Kane,如果你仔細觀察,你會注意到我在我的答案中提到了斯卡拉茲。 – missingfaktor
我知道。我提供了Scalaz的鏈接和描述,所以其他人不必像Google那樣去谷歌它。我重複說Scalaz包含'|>'爲了撇油器的好處。 –
您不能引用文字本身,但您可以創建一個塊,該塊具有局部的臨時變量。
scala> val lastChar = { val tmp = "Hello World"; tmp(tmp.length - 1) }
lastChar: Char = d
scala> tmp
<console>:8: error: not found: value tmp
您是否期望生產'd'而不是'l'?對不起,只要確定.... –
@射線,我已修復了錯字。 – Rahul