0
我讀了這個問題:LinkScala - 什麼是類型輸入,Input.Source和Input.Offset是什麼意思?
這是一個代碼塊,其接受的答案:
/** A parser that matches a regex string */
implicit def regex(r: Regex): Parser[String] = new Parser[String] {
def apply(in: Input) = {
val source = in.source
val offset = in.offset
val start = handleWhiteSpace(source, offset)
(r findPrefixMatchOf (source.subSequence(start, source.length))) match {
case Some(matched) =>
Success(source.subSequence(start, start + matched.end).toString,
in.drop(start + matched.end - offset))
case None =>
Failure("string matching regex `"+r+"' expected but `"+in.first+"' found", in.drop(start - offset))
}
}
}
我不明白的代碼的某些部分:花括號之間
- 代碼就像是它定義了一個新類,雖然之前它是「新的Parser [String]」,我知道的是創建類Parser的新時刻[String]
- 在代碼中,有一個fu應用類型輸入的參數,但我沒有發現任何類似Scaladoc及其成員:源,偏移
你能解釋這些部分給我嗎?
對不起。在這種情況下什麼是別名,因爲我確定正則表達式沒有成員源和偏移?那麼第一部分呢,我們怎樣才能在「新」之後定義花括號和應用方法呢?關於該版本,我仍然使用2.9.2所以它不應該是一個問題。 – Tr1et 2014-09-23 07:47:22
它在文檔中說:type Input = Reader [Elem]。閱讀器有源和偏移量字段。 – 2014-09-23 08:29:10
帶花括號的'new'定義了一個擴展Parser [String]的匿名類。 – 2014-09-23 08:34:38