-
6 votes2 answers1346 views
实际使用期货?即,如何杀死他们?
期货非常方便,但在实践中,您可能需要对其执行提供一些保证 . 例如,考虑: import scala.actors.Futures._ def slowFn(time:Int) = { Thread.sleep(time * 1000) println("%d second fn done".format(time)) } val fs = List( fu... -
387 votes14 answers327 views
Scala的案例类和类之间有什么区别?
我在Google中搜索了 case class 和 class 之间的差异 . 每个人都提到当你想在类上进行模式匹配时,使用用例类 . 否则使用类,并提及一些额外的额外津贴,如equals和哈希码覆盖 . 但这些是为什么应该使用案例类而不是类的唯一原因? 我想在Scala中这个功能应该有一些非常重要的原因 . 有什么解释或者是否有资源可以从中了解有关Scala案例类的更多信息? -
370 votes9 answers1043 views
Scala的所有符号运算符都意味着什么?
Scala语法有很多符号 . 由于使用搜索引擎很难找到这些类型的名称,因此全面列出这些名称会很有帮助 . Scala中的所有符号都是什么,它们各自做了什么? 特别是,我想了解 -> , ||= ,_ ++= , <= , _._ , :: 和 :+= . -
6 votes1 answers1584 views
Akka期货例外
当未来的演员抛出异常时会发生什么? 根据http://doc.akka.io/docs/akka/snapshot/scala/futures.html的Akka文档: 如果Actor或调度程序正在完成Future,则无关紧要,如果捕获到Exception,则Future将包含它而不是有效结果 . 如果Future确实包含Exception,则调用Await.result将导致它再次被抛出,以便... -
21 votes5 answers1771 views
Scala中超时的未来
假设我有一个函数,它调用阻塞可中断操作 . 我想以超时的方式异步运行它 . 也就是说,我希望在超时到期时中断该功能 . 所以我想尝试这样的事情: import scala.util.Try import scala.concurrent.Future def launch(f: () => Unit, timeout: Int): Future[Try[Unit]] = { val ... -
5 votes2 answers1374 views
当子类使用val实现它时,Scala抽象方法在超类中为null?
我在我的scala代码中发现了一个错误,这让我很困惑 . 以下是问题的简化版本 . 在抽象类的构造函数中,我想检查一些关于抽象方法的断言 . 因此,当创建子类的对象时,将检查这些断言,以查看是否所有这些断言都应该实现 . 当子类使用“val”实现抽象方法时会出错: Scala代码: abstract class A { def aval : String assert(aval !... -
2 votes1 answers556 views
Scala:ResultSet转换为不同类型的多图
我将在Scala中创建JDBC ResultSet的包装器 .此包装器旨在成为函数 ResultSet => ParticularType .问题是我无法找到制作MultiMaps的通用解决方案 . 这是我获取集合的方式: abstract class CollectionCreator[C] extends (ResultSet => C) { def apply(rs: ... -
3 votes4 answers1770 views
Scala中的泛型集合有问题
我很困惑如何在Scala中解决这个问题 . 在Java中,我放弃了泛型或使用强制转换,但Scala比这更严格 . 这就是我所拥有的 . 一个抽象基类 Factory[+F <: Factory[F]] 和一些与此无关的具体实现 . 这是协变的 . 这个类有一个创建产品的方法 - 见下一点 . 表示工厂产品的抽象基类 Product[+F <: Factory[F]] . 这些... -
1 votes1 answers756 views
在scala类中使用类型为java.util.Map [String,String]的arg覆盖java方法
我有一个用Java编写的抽象类: abstract class AbstractJavaClass { abstract public Map<String, String> method(Map<String, String> params); } 我试图在scala中扩展这个类: class ScalaConcreteClass extends AbstractJ... -
4 votes1 answers1581 views
Scala val语法:val myVal:{def ...}是什么意思?
我是Scala和funcprog的新手 . 我有一段代码(你们中的一些人可能会认出来): trait SwingApi { type ValueChanged <: Event val ValueChanged: { def unapply(x: Event): Option[TextField] } ... } ... -
0 votes2 answers1617 views
Scala - 覆盖Scala类中的Java接口方法
我有一个Java接口 Writer 定义如下: public interface Writer<K, V> { Iterator<Product2<K, V>> iterator (); } 我试图在Scala类 ExternalWriter 中实现此接口,如下所示: private class ExternalWriter[K, V, C] e... -
1 votes1 answers1588 views
关闭由超时未来创建的资源
当我们有创建资源的方法时,有时需要只等待指定的持续时间 . 例如,我们要等待10秒才能连接到数据库 . 我试图使用future和Await.result来获得它 . 不幸的是,Await.result在指定时间后抛出异常,但不会杀死正在进行的未来 . 所以在超时之后我们最终会遇到TimeoutException,但如果将来最终完成,我们没有任何能力关闭返回的结果 . 例: import java.... -
3 votes1 answers1565 views
依赖类型的工厂方法
我正在与Scala 2.11.7中的依赖类型进行斗争 . 以下是上下文: trait Counter { type T def zero: T def incr( t: T ): T } object IntCounter extends Counter { type T = Int val zero = 0 def incr( t: Int ) = t + 1 } ca... -
1 votes1 answers1753 views
Scala DI使用trait vs抽象类与自我类型注释?
在带有类型注释的Scala依赖注入中,注入的类/对象引用可以实现为def trait成员或val抽象成员,如: trait InjectedTrait {} class InjectedClass extends InjectedTrait {} trait TestTrait { def injectedTrait: InjectedTrait } class TestClass ... -
33 votes3 answers1381 views
Scala:方法\运算符重载
以下示例来自“Programming in Scala”一书 . 给定一个类'Rational'和以下方法定义: def add(that: Rational): Rational = new Rational( this.numer * that.denom + that.numer * this.denom, this.denom * that.deno... -
2 votes1 answers1749 views
类java.lang.String类MyJavaClass中的值foo在Java类和Scala特性中具有不兼容的类型混合
我有一个Scala特征 trait MyTrait{ val foo: String def bar = foo } 以及提供foo的Java类 public class MyJavaClass { public final String foo = "hello"; } 现在我尝试混合它们 class MyScalaClass extends MyJa... -
6 votes2 answers1159 views
Scala vals可以修改
我开始玩Scala,我读到的第一件事就是vals: 分配一次且永不改变的变量,以及可能在其生命周期内发生变化的变量 但我很好奇为什么我能做到这一点: val foo = Array(1, 3 ,2) scala.util.Sorting.quickSort(foo) 如果我检查foo变量现在是有序的,这意味着它已经改变了......如果我打印(foo),两者都有相同的,所以变量指向同一个对象... -
8 votes1 answers697 views
方法与Scala中的函数和含义
让我们声明一个def和一个等价函数作为val: scala> def optional(x:Int):Option[String] = None optional: (x: Int)Option[String] scala> val optional2:(Int)=>Option[String] = (i:Int) => None optional2: Int =>... -
2 votes5 answers426 views
主构造函数中的Scala局部变量
如何在Scala中我可以在主构造函数中定义局部变量? 我需要从 Scala for the impatient 书中解决这个练习: 编写具有主构造函数的Person,该构造函数接受包含第一个名称,空格和姓氏的字符串,例如new Person(“Fred Smith”) . 提供只读属性firstName和lastName . 主构造函数参数应该是var,val还是plain参数?为什么? 现在... -
3 votes3 answers1328 views
如何在Scala中以惯用方式处理默认值?
假设我有以下功能 def getHost():Option[String] = ... def getPort():Option[Int] = ... 现在我想使用默认值,如果这些函数返回None . def makeURL() = { val host = getHost() getOrElse "localhost" val port = getPort() ge... -
14 votes5 answers1398 views
为什么不能在scala中覆盖可变变量?
为什么不能在scala中覆盖可变变量? class Abs(var name: String){ } class AbsImpl(override var name: String) extends Abs(name){ } 上面的代码给出了以下编译时错误: - variable name cannot override a mutable variable If name is declar... -
4 votes2 answers477 views
混淆scala私有字段变量
我是斯卡拉研究的第三天 . 使用书“开始scala” . 作者使用一个例子来显示变量define与val var之间的差异而没有var val: class Book(private val title: String) { def printTitle(b: Book) { println(b.title) } } 在控制台中: scala> val book ... -
19 votes2 answers248 views
monad变换器是否适用于从服务中获取JSON?
我玩了! 2用于Scala应用程序,需要从外部服务检索JSON格式的某些数据 . 表演!框架允许通过将响应包装在_1281291中来异步发出HTTP请求 . Promise 是一个monad,它包含将来可用的值 . 这很好,但在我的情况下,我从Web服务得到的是一个JSON字符串 . 我必须解析它,解析可能会失败 . 所以我必须将我得到的任何内容包装成 Option . 结果是我的许多方法都... -
3 votes2 answers1669 views
如何编写在Scala中返回Option [List]的函数?
假设我有两个函数来获取订单和订单商品: def getOrders(): Option[List[Int]] = ... def getOrderItems(orderId: Int): Option[List[Int]] = ... 请注意,由于每个函数都可能失败,因此两个函数都返回 Option[List] . 现在我想获得所有订单商品的 Option ,如下所示: 如果两个函数都返回 S... -
16 votes1 answers1227 views
了解Scala中的随机monad
这是我以前的后续行动question Travis Brown指出 java.util.Random 是副作用并且建议使用随机monad Rng library来使代码纯粹起作用 . 现在我正在尝试自己构建一个简化的随机monad以了解它是如何工作的 . 是否有意义 ?您如何修复/改进下面的解释? 随机生成器 首先我们抄袭 java.util.Random 的随机生成函数 // do some... -
0 votes1 answers621 views
Scala:Merge Sort使用Futures超时
以下顺序合并排序可以非常快速地返回结果: - def mergeSort(xs: List[Int]): List[Int] = { def merge(xs: List[Int], ys: List[Int]): List[Int] = (xs, ys) match { case (Nil, _) => ys case (_, Nil) => xs ... -
1 votes1 answers1622 views
用scala-mock嘲笑一个特征的val
我想嘲笑一个特质的val . 例如,在此代码中,模拟val baz : trait Foo { def bar(): Int val baz: Int } val fooMock = mock[Foo] (fooMock.bar _).expects().returning(5) (fooMock.baz _).expects().returning(6) //doesn't comp... -
3 votes1 answers924 views
Scala案例类和构造函数
我发现自己写了很多(某种)样板代码 . 例如,说我有以下特征 trait Foo { def x: Int } trait Bar { def y: Boolean def z: String } 然后我想要一个不多于或少于实现这些的案例类 . case class MyClass(x: Int, y: Boolean, z: String) extends Foo with Ba... -
1 votes1 answers445 views
Scala反射:为什么getMethods返回超类中定义的私有val?
下面的代码定义了一个特征 T ,其中包含私有val someVal 和一个扩展 T 的匿名类 . 如果我们从匿名类的实例调用 getMethods ,则 someVal 被列为公共方法: scala> trait T { private val someVal = 3 } defined trait T scala> new T {}.getClass.getMethods.app... -
5 votes1 answers576 views
使用Play 2.0映射[String,JsObject]的JSON?
我是Play的新手! &Scala,但我正在尝试创建一个服务,将JSON请求映射到Map [String,JsObject](或Map [String,JsValue],我不确定区别),然后输出一个列表密钥递归地通过 Map (最好是树) . 但我有开始的问题: def genericJSONResponse = Action(parse.json) { request => reque...