从应用程序开发团队的角度来看,处理整数溢出(如999999*999999(结果> Integer.MAX_VALUE))的常见做法是什么?
人们可以BigInt强制要求并禁止使用Integer,但这是一个好/坏的想法?
WartRemover是一个scalac插件.通常它是通过sbt插件配置的.
我希望能够在我的sbt项目上运行WartRemover作为单独的配置或任务,而不会影响通常的运行compile.
将Wartremover添加到我之后,我plugins.sbt尝试了以下几种变体.
lazy val Lint = config("lint").extend(Compile)
project("foo").
configs(Lint)
settings(inConfig(Lint)(Defaults.compileSettings): _*).
settings(inConfig(Linting)(wartremover.wartremoverSettings):_*).
settings(inConfig(Linting)(wartremover.wartremoverErrors := wartremover.Warts.all))
Run Code Online (Sandbox Code Playgroud)
后来scalacOptions大致包含了我在新lint配置和配置中的预期compile.但是,当我在调试模式下运行lint:compile并compile使用sbt时,我可以看到scalac的命令行参数,要么两个命令都导致-P:wartremover:...交换开关.这是令人惊讶的,因为只lint:scalacOptions显示了-P:wartremover:...开关.
如何创建单独的sbt配置或任务以使用WartRemover进行编译而不会影响compile:compile?
看起来不一致的是,在Scala中,整数运算div除零抛出a java.lang.ArithmeticException: / by zero,但浮点运算(1.0/0.0)返回Double.Infinity.
我理解从类型的角度来看,同时拥有Double.Infinity和Integer.Infinity可能很棘手,但我认为使用scala强大的类型系统他们可以想出一些其他方法来解决问题的这个方面.
还有其他我想念的东西可以更好地解释这两种不同的行为吗?
我正在尝试在现有的数据库表(具有类似的50k记录)中设置一个FULLTEXT索引,使用下面的命令,该命令有效:
ALTER TABLE `record_attributes` ADD FULLTEXT `FULLTEXT` (`content_text` ,`content_varchar`)
Run Code Online (Sandbox Code Playgroud)
问题是,当我尝试在该表上执行MATCH AGAINST时,它给了我这个错误:
#1191 - Can't find FULLTEXT index matching the column list
Run Code Online (Sandbox Code Playgroud)
我一直在谷歌搜索,没有找到任何我可能做错的事情.是否必须在没有任何记录的表上添加索引?
干杯
当我通过Eclipse重命名.scala文件时,类名本身不会被重命名.
这是预期的行为吗?它似乎没有破坏任何东西.
我希望它可以重命名,来自Java背景,文件名/类名必须相等.
是否有理由match反对Seq在IndexedSeq类型上使用不同于对类型的处理方式LinearSeq?对我来说,无论输入类型如何,下面的代码似乎应该完全相同.当然它不会或我不会问.
import collection.immutable.LinearSeq
object vectorMatch {
def main(args: Array[String]) {
doIt(Seq(1,2,3,4,7), Seq(1,4,6,9))
doIt(List(1,2,3,4,7), List(1,4,6,9))
doIt(LinearSeq(1,2,3,4,7), LinearSeq(1,4,6,9))
doIt(IndexedSeq(1,2,3,4,7), IndexedSeq(1,4,6,9))
doIt(Vector(1,2,3,4,7), Vector(1,4,6,9))
}
def doIt(a: Seq[Long], b: Seq[Long]) {
try {
println("OK! " + m(a, b))
}
catch {
case ex: Exception => println("m(%s, %s) failed with %s".format(a, b, ex))
}
}
@annotation.tailrec
def m(a: Seq[Long], b: Seq[Long]): Seq[Long] = {
a match {
case Nil => b
case firstA :: moreA => b …Run Code Online (Sandbox Code Playgroud)