考虑以下虚拟SSP文件:
Presto
由以下内容呈现:
#{
val testMap1 = Map("a" -> true, "b" -> true, "c" -> true)
val testMap2 = Map("d" -> false, "e" -> false, "f" -> true)
val something = true
val value = 3
}#
<html>
<head>
<title>Test</title>
</head>
<body>
#if(something)
<h1>True</h1>
#elseif(value > 2)
<h1>False, but higher</h1>
#else
<h1>False</h1>
#end
#if(testMap1.forall(_._2) && testMap2.forall(_._2))
<h1>All true</h1>
#elseif(testMap1.forall(_._2) || testMap2.forall(_._2))
<h1>One map true</h1>
#else
<h1>Neither</h1>
#end
这会失败。
第一个if块将很好地执行,但第二个if块将失败并出现一些SyntaxError(import java.io.File
import org.fusesource.scalate.{ TemplateSource, TemplateEngine }
val engine = new TemplateEngine()
val file = new File("path/to/file.ssp")
engine.layout(TemplateSource.fromFile(file))
或Missing if at...
)。我没有看到两个块之间有任何语法差异。每次我使用一些功能性的东西“动态”生成布尔值时,我就会碰到这个问题。我不被允许这样做吗?
例如,如果我将第二个块更改为以下块,则 工作:
Cannot have more than one else at ...
这里发生了什么?