小编gia*_*olo的帖子

Scala UpperBound和LowerBound概念

以下是我尝试运行的代码:

class Student {
  def printDetails = println("I am a student")
  def printSomeOtherDetails = println("I love Studying")
}

class ComputerScienceStudent extends Student {
  override def printDetails = println("I am a Computer Science Student")
  override def printSomeOtherDetails = println("I love Scala")
}

class InformationTechnologyStudent extends Student {
  override def printDetails = println("I am an Information Technology Student")
  override def printSomeOtherDetails = println("I love Java")
}

class MyGenericClassForUpperBound {
  def printStudentDetails[S <: Student](student: S) = {
    student.printDetails
    student.printSomeOtherDetails
  }
}

class MyGenericClassforLowerBound …
Run Code Online (Sandbox Code Playgroud)

generics scala variance subtyping

8
推荐指数
1
解决办法
3023
查看次数

有没有一种好方法可以检查Datastax Session.executeAsync()是否抛出了异常?

我试图通过调用session.executeAsync()代替session.execute()DB写入来加速我们的代码.

我们有数据库连接可能已关闭的用例,当前之前execute()在连接丢失时抛出异常(集群中没有主机可访问).我们可以捕获这些异常,并在其他地方重试或保存数据等...

有了executeAsync(),它看起来没有任何方法来实现这个用例 - ResultSetFuture需要访问返回的对象来检查结果,这将失去executeAsync()首先使用的目的...

有没有办法在executeAsync()调用的任何地方添加一个监听器(或类似的东西),它会异步通知一些其他代码,因为DB写入失败了?

这是相关的吗?Datastax 1.0.2 Java 1.7.40

java datastax-java-driver datastax

8
推荐指数
1
解决办法
4579
查看次数

如何在Java/Scala中生成TimeUUID

有谁知道如何在Java/Scala中生成基于TimeBased的UUID?

这是列系列:

CREATE table col(ts timeuuid)
Run Code Online (Sandbox Code Playgroud)

我正在使用Cassandra 1.2.4

感谢您的帮助!

java scala cassandra timeuuid

8
推荐指数
2
解决办法
2万
查看次数

Scala得到案件类的领域和类型

所以我试图在一个案例类中得到字段及其类型.目前我这样做

typeOf[CaseClass].members.filter(!_.isMethod).foreach{
   x =>
     x.typeSignature match {
        case _:TypeOfFieldInCaseClass => do something
        case _:AnotherTypeOfFieldInCaseClass => do something
     }
}
Run Code Online (Sandbox Code Playgroud)

问题是x.typeSignature类型reflect.runtime.universe.Type不能匹配案例类中的任何类型.有办法做到这一点吗?

reflection scala pattern-matching match case-class

8
推荐指数
1
解决办法
5016
查看次数

SCALA应用程序的Gradle init项目

我想为SCALA创建一个骨架控制台应用程序,即一个带有打印"Hello world"主函数的入口类.

我能够通过执行以下命令来创建一个scala库init项目:

gradle init --type scala-library

但似乎没有scala-application,运行:

gradle init --type scala-application

不支持请求的构建设置类型"scala-application".支持的类型:'basic','groovy-application','groovy-library','java-application','java-library','pom','scala-library'.

gradle是否没有scala控制台应用模板?

scala gradle

8
推荐指数
1
解决办法
884
查看次数

在整个地方使用Option感觉有点尴尬.难道我做错了什么?

作为文章的结果,我读到了Option有助于避免NullPointerException的类,我开始在整个地方使用它.想象一下这样的事情:

var file:Option[File] = None
Run Code Online (Sandbox Code Playgroud)

以后当我使用它时:

val actualFile = file.getOrElse(new File("nonexisting"))
if(actualFile.getName.equals("nonexisting")) { // instead of null checking

}
else { // value of file was good

}
Run Code Online (Sandbox Code Playgroud)

做这样的事情对我来说感觉不那么"正确".我也注意到.get已经被弃用了..这种东西是你们用Option做的,或者我走错了路?

scala scala-option

7
推荐指数
3
解决办法
2709
查看次数

Scala:抽象类构造函数参数vs Trait val成员?

我注意到有几个关于如何在抽象类和特征之间进行选择的讨论,但似乎没有一个关注于以下几点.让我使用抽象类的一个原因是,它们可以有构造函数参数,而特征却不能.但为什么不是以下

trait X {
  def haha: Int
}
class Y(val haha: Int) extends X
Run Code Online (Sandbox Code Playgroud)

甚至不需要早期定义来使一切正常工作(我担心).抽象类版本是

abstract class X(haha: Int)
class Y(val haha: Int) extends X(haha)
Run Code Online (Sandbox Code Playgroud)

而且我不喜欢抽象类版本,因为当你多次扩展时,这些构造函数参数出现在任何地方(也许有人告诉我如何避免这种情况?).

我知道抽象类可以更好地插入Java,并且更符合"is-a"概念.尽管如此,我是否有理由在某处使用抽象类?谢谢!

abstract-class scala traits

7
推荐指数
1
解决办法
7102
查看次数

Scala中的模糊导入

我正在Scala中编写一个小型模拟程序.它是基于actor的,所以我创建了一个文件messages.scala,其中包含系统中有效的所有消息.

除此之外,我有一个管理组件,management.scala以及一个定义节点和链接类的文件nodes.scala.管理和节点文件import sim.messages._,然后管理,import sim.nodes._因为它需要能够从该文件实例化事物.

问题来自一个和Tick两个使用的消息类型.编译管理组件后,我得到:management.scalanodes.scala

error: reference to Tick is ambiguous;
it is imported twice in the same scope by
import sim.nodes._
and import sim.messages._
Run Code Online (Sandbox Code Playgroud)

我尝试删除管理组件中的消息导入,因为它们显然已经导入到此范围,但后来又找不到它们了.想法?

import scala

7
推荐指数
1
解决办法
5107
查看次数

Scala特征混合秩序和超级呼叫

我有这个代码:

trait base{
  def msg: Unit= {
    println{"base"}
  }
}

trait foo extends base {
  abstract override def msg: Unit ={
    super.msg
    println("foo")
  }
}

class base2{
  def msg:Unit = {
    println{"base 2"}
  }
}

class test extends base2 with foo{
   override def msg: Unit ={
    super.msg
    println("done")
  }
}
Run Code Online (Sandbox Code Playgroud)

如果我打电话(new test).msg,这打印出如下内容:base, foo, done

但是,如果我将基本特征更改为:

trait base{
  def msg: Unit
}
Run Code Online (Sandbox Code Playgroud)

它打印出如下内容: base 2, foo, done

我理解with从右到左的顺序(最后一个先来)但是怎么样extends?为什么有时会打印base2,但有时base呢?

scala linearization traits mixins

7
推荐指数
1
解决办法
2386
查看次数

asp.net的app_code中的相对文件路径

在我的asp.net应用程序中,我有一个util类将从xml文件中读取一些数据,然后我可以稍后调用该类,该文件应该加载一次,所以我使用静态构造函数.

class UtilHelper{
  static UtilHelper(){
    XmlDocument doc=new XmlDocument();
    doc.load("a.xml"); //here the asp.net cannot find the file,it always try to find file in the iis's dictionary.
  }
}
Run Code Online (Sandbox Code Playgroud)

有些人可能会建议我使用"Server.mappath(xxx)"

但是这个类不是xx.aspx.cs. 因此上下文中没有"HttpRequest"或"HttpServerUtilly".

有任何想法吗?

asp.net app-code relative-path

6
推荐指数
1
解决办法
9444
查看次数