2012-12-15 82 views
3

可能重複:
Understanding the tilde in Scala’s parser combinators是什麼〜斯卡拉嗎?

我看到這個play2 tutorial如下:

val task = { 
    get[Long]("id") ~ 
    get[String]("label") map { 
     case id~label => Task(id, label) 
    } 
    } 

什麼是~是什麼意思? (搜索在谷歌~未返回任何內容)。 以及爲什麼它似乎是在第一線的末端,然後它似乎連接兩個屬性?

+1

使用[symbolhound](http://symbolhound.com/)查找類似的東西。 –

回答

8

Scala的語法允許方法名使用特殊字符,如+*:,並把它們作爲綴運營商,從而有效地使操作符重載,以及新運營商的創建。這可以使代碼更加簡潔,但也很難找出一個特定的Scala運算符是幹什麼的,因爲您無法有效地執行Google搜索\:++~::或幾乎任何Scala運算符方法名稱。爲了使其變得更加困難,可以將隱式轉換應用於其中一個操作數,所以提供操作符方法的類可能與源代碼中操作數的聲明類不同。

UPDATE:使用Scalex

+0

非常感謝!我會檢查那個頁面(但是我有Ruby背景,我只是覺得你用中文和我說話)。 – alexchenco

+0

它以什麼方式幸福(除了表演)? – alexchenco

+0

僅供參考,scalex.org不再適用於Scala。 –

1

這是一個combinatory parser

Live example

這是一個assignement我曾在一個編譯器當然在大學它簡化代數表達式

(x + 0) - (1 * --x) 
x + - (1 * --x) 
x + - (--x) 
x + - (x) 
0 

構建一個sql表是somethi NG類似

級第一部分

解析兩排

和地圖的情況下給你解析結果

看看thatthat

我記得這個是我開始學習Scala/Play時看到的第一件事情之一。我建議你好好休息,讀整本書(programming in scala 2nd edition),併爲此online class

你也應該考慮提升