提升和类型安全

时间:2012-07-11 06:50:52

标签: scala lift

我正在学习Lift。当我阅读有关模板的内容时,我知道他们有许多在编译时没有进行类型检查的事情:

  • 模板可能包含对不存在的代码段的引用
  • SiteMaps可能会引用不存在的网页
  • 代码段调度方法采用字符串参数,我们可以轻松地输入拼写错误

是否有任何替代方案可以使这些问题不那么严重,即外部代码检查程序或库中的选项可以允许以类型安全的方式执行相同操作?或者可能存在另一个在这种关系中更严格的Web框架(可能是其他语言)。

1 个答案:

答案 0 :(得分:1)

类型检查是强类型语言(如Scala或Java)的编译时功能,它允许验证签名和类型之间的关系。当需要Meat类型的参数时,这样的检查将阻止您传递Banana类型的参数,或者将String分配给Int类型的变量。通常,在Ruby或Javascript等动态语言中,这是不可能的

您要找的是不是类型检查器。您不希望验证您的程序在语法上是否正确,而是确保其行为正确,并且其解决方案称为自动化测试。

你完全能够编写语法正确但行为错误的代码:

public boolean isTrue(boolean value){
        return !value;
}

如果您认为反过来,那么如何测试编译时需要填充某些数据的模板的正确性?

 <!-- importing a snippet depending on the value of a variable -->
 <import src="${snippetName}.xml"/>

你不能,因为编译时的所有变量都没有任何价值。这就是为什么自动化测试很重要,为您的应用程序编写测试用例不能被编译时检查所取代。