4
我知道def
和val
和lazy val
之間的區別,但我不確定它們對於Parser Combinators的影響。我見過的所有示例包含這樣的代碼:def或val或lazy val的語法規則?
def statement: Parser[Statement] =
ifStatement |
whileStatement |
expressionStatement | ...
從幾個實驗我已經做了,似乎val
和lazy val
工作爲好,但我不知道是否有這樣的情況,他們將無法正常工作再次,像遞歸或定位解析器或whatnot。
請賜教!
好了,這樣我就可以用'def'無處不在,不必過於擔心性能? – fredoverflow
從本質上講,但是您應該注意,每次使用它時都不會重新初始化語法。當使用[packrat解析器](http://www.scala-lang.org/api/current/index.html#scala.util.parsing.combinator.PackratParsers)作爲解析器的概念時,也有關於memoization的含義身份變得重要,但除非性能成爲問題,否則我不會擔心。 –