class Person(val name:String,var age:Int )
def person = new Person("Kumar",12)
person.age = 20
println(person.age)
Run Code Online (Sandbox Code Playgroud)
这些代码行输出12,即使person.age=20已成功执行.我发现这是因为我使用了def def person = new Person("Kumar",12).如果我使用var或val,则输出为20.我理解scala中的默认值是val.这个:
def age = 30
age = 45
Run Code Online (Sandbox Code Playgroud)
...给出编译错误,因为它默认为val.为什么上面的第一组行不能正常工作,而且还没有错误?
我正在学习Scala中的Parser Combinators,并且看到了不同的解析方法.我主要看到三种不同类型的解析器,即.gegexpParsers,StandardTokenParsers和JavaTokenParsers.我是解析的新手,并没有根据我们的想法选择合适的Parser.要求.任何人都可以解释这些不同的解析器如何工作以及何时使用它们.
我在接受采访时被问到以下问题而无法回答这个问题.
如何将jdbc操作,Web服务调用和JMS操作包含在一个事务中.这意味着如果其中一个失败,则必须全部滚动.
在涉及多个数据库的数据库事务的情况下,我听说过两阶段提交协议和oracl XA.但不确定这里是否可以使用相同的内容.
我想知道为什么scala不能推断出方法参数的类型.我可以看到haskel(也有类型推断)可以做同样的事情.那为什么不为斯卡拉?
我有必须在集群模式下运行的作业以及需要在每个节点中运行的作业.我还需要非集群作业是持久的,因此我创建了两个调度程序,一个在集群模式下运行,另一个在非集群模式下运行,两者都使用与作业存储相同的石英表集.这个设计有什么问题吗?我在Quartz Configuration参考中看到以下声明(http://quartz-scheduler.org/documentation/quartz-2.1.x/configuration/ConfigJDBCJobStoreClustering)
永远不要针对与任何其他实例正在运行(start()ed)的同一组数据库表启动(scheduler.start())非群集实例.您可能会遇到严重的数据损坏,并且肯定会遇到不稳定的行为但是没有解释,我不清楚它是否真的意味着.如果没有创建另一组石英表,还有其他选择.