小编Aar*_*rup的帖子

Scala是否有一个库方法来在Option中包装可空的返回值?

就像是

def option[T](v: T): Option[T] = if (v == null) None else Some(v)
Run Code Online (Sandbox Code Playgroud)

我非常高兴自己定义这个实用程序方法,但只是想知道它是否已经存在于某个地方.

scala

15
推荐指数
1
解决办法
4229
查看次数

如何区分def foo [A](xs:A*)和def foo [A,B](xs:(A,B)*)?

我知道类型擦除使它们在运行时看起来相同,类型,所以:

class Bar {
    def foo[A](xs: A*) { xs.foreach(println) }
    def foo[A, B](xs: (A, B)*) { xs.foreach(x => println(x._1 + " - " + x._2)) }
}   
Run Code Online (Sandbox Code Playgroud)

给出以下编译器错误:

<console>:7: error: double definition:
method foo:[A,B](xs: (A, B)*)Unit and
method foo:[A](xs: A*)Unit at line 6
have same type after erasure: (xs: Seq)Unit
        def foo[A,B](xs: (A, B)*) { xs.foreach(x => println(x._1 + " - " + x._2)
) }
            ^
Run Code Online (Sandbox Code Playgroud)

但是有一种简单的方法可以写:

bar.foo(1, 2, 3)
bar.foo(1 -> 2, 3 -> 4)
Run Code Online (Sandbox Code Playgroud)

并让这些调用foo的不同重载版本,而不必明确命名它们:

bar.fooInts(1, 2, …
Run Code Online (Sandbox Code Playgroud)

scala overloading type-erasure

15
推荐指数
2
解决办法
2716
查看次数

如何获取与上下文绑定关联的类型类的实例?

注意:我正在提出这个问题来自己回答,但欢迎其他答案.

请考虑以下简单方法:

def add[T](x: T, y: T)(implicit num: Numeric[T]) = num.plus(x,y)
Run Code Online (Sandbox Code Playgroud)

我可以使用如下的上下文绑定重写它

def add[T: Numeric](x: T, y: T) = ??.plus(x,y) 
Run Code Online (Sandbox Code Playgroud)

但是如何获取该Numeric[T]类型的实例以便我可以调用该plus方法?

scala typeclass context-bound

15
推荐指数
2
解决办法
2073
查看次数

在Scala中编组/解组XML

我正在研究Scala和XML之间的编组/解组数据的各种方法,我有兴趣获得社区反馈(最好以第一手知识/经验为基础).

我们目前正在使用JAXB,这很好,但我希望有一个纯Scala解决方案.我正在考虑以下方法:

  1. 使用Scala的内置XML工具:Scala-> XML会很简单,但我的猜测是另一个方向会相当痛苦.另一方面,这种方法支持任意翻译逻辑.

  2. 数据绑定:scalaxb目前似乎有些不成熟,并且不处理我们当前的模式,我不知道Scala的任何其他数据绑定库.与JAXB一样,需要额外的转换层来支持相关的转换.

  3. XML pickler组合器:GData Scala Client库提供XML pickler组合器,但是最近的项目活动一直很少,我不知道当前状态是什么.

问题:

  1. 您对我列出的方法/库有什么经验?
  2. 每个的相对优势和劣势是什么?
  3. 我还应该考虑其他方法或Scala库吗?

编辑:

我在自己对这个问题的回答中添加了关于我对pickler组合器的早期印象的一些注释,但我仍然对那些真正了解各种方法的人的反馈非常感兴趣.我希望的是一个有点全面的比较,可以帮助开发人员选择适合他们需求的方法.

xml scala marshalling unmarshalling

15
推荐指数
1
解决办法
5074
查看次数

如何将GWT或Vaadin与Play Framework 2.0集成

是否可以使用GWT或Vaadin实现Play Framework 2.x Web应用程序的客户端?

Play 1.x有一个提供GWT集成的特殊模块,但我找不到在Play 2.x版本中一起使用这些技术的示例.这些技术可以整合吗?是否有模块,或者是否必须使用其他方法?

gwt vaadin playframework-2.0

14
推荐指数
1
解决办法
3696
查看次数

Scaladoc [用例]

为什么Scaladoc中的一些方法描述开始于[use case]

例: scala.collection.immutable.StringOps.++

它只是一个将来被替换的占位符吗?

scala documentation-generation scaladoc

13
推荐指数
1
解决办法
1785
查看次数

Eclipse特征集成测试的最佳实践

我正在开发一个由几个Eclipse插件组成的Eclipse功能,使用Equinox声明性服务(DS)在运行时将插件连接在一起.我想添加集成测试来验证equinox配置.

特别是,我想验证一下

  • 服务组件按预期绑定在一起
  • 捆绑包已激活
  • 插件按预期共享信息(参见编辑2)

此外,我想使用Eclipse PDE无头构建(如此此处所述)将此集成测试作为我的持续集成过程的一部分.

我的问题是:您能否推荐任何框架,工具或实践,以便在我确定的约束条件下促进此类集成测试?

到目前为止我找到了两个线索:

  • Spring Dynamic Modules包含一个OSGi集成测试框架.但是,我无法在Eclipse中运行简单的Spring DM测试.它抱怨"平台已经在运行".
  • Pax Exam(以前称为Pax Drone)是另一个OSGi集成测试框架.

编辑:为了澄清,每个插件都有一个配置了组件定义xml文件的OSGi服务组件.其中一个配置文件中的错误不会破坏任何插件依赖性,并且很容易在运行时被忽视.必须进行集成测试才能检测到此类故障.

编辑2:到目前为止,我所看到的每件事似乎都证实了Uri的断言(见下文),多插件Eclipse功能未在功能/产品级别进行集成测试.如果我能至少自动验证服务组件是否正确绑定在一起,我愿意不进行全面的集成测试.

我的方法(还没有工作):


In a JUnit test do
   For each bundle/plugin of interest
      Get the osgi Bundle object with org.eclipse.core.runtime.Platform.getBundle()
      Verify that the Bundle is active with Bundle.getState()
      Verify that the Bundle is using the expected services with Bundle.getServicesInUse()
      Verify that the Bundle has registered the expected services with Bundle.getRegisteredServices()

我正在使用Eclipse Plug-in …

eclipse integration-testing osgi eclipse-pde

10
推荐指数
1
解决办法
1771
查看次数

Scala 2.7.7编译器/解释器中的虚假模糊引用错误?

谁能解释下面的编译错误?有趣的是,如果我将方法的返回类型更改get()String,则代码编译得很好.请注意,该thenReturn方法有两个重载:一元方法和一个至少需要一个参数的varargs方法.在我看来,如果调用在这里是模棱两可的,那么它总是模棱两可的.

更重要的是,有什么方法可以解决歧义吗?

import org.scalatest.mock.MockitoSugar
import org.mockito.Mockito._

trait Thing { 
   def get(): java.lang.Object 
}

new MockitoSugar {   
   val t = mock[Thing]  

   when(t.get()).thenReturn("a")  
}
Run Code Online (Sandbox Code Playgroud)

错误:对重载定义的模糊引用,两个方法然后返回特征类型
java.lang.Object,java.lang.Object*)org.mockito.stubbing.OngoingStubbing [java.lang.Object]和方法返回特征OngoingStubbing的特征OngoingStubbing type(java.lang.Object)org.mockito.stubbing.OngoingStubbing [java.lang.Object]匹配参数类型(java.lang.String)when(t.get()).thenReturn("a")

scala compiler-errors

10
推荐指数
3
解决办法
3835
查看次数

在Scala中提升函数值的方法

Scala库是否为将给定类型的方法提升为函数值提供了任何支持?

例如,假设我想举起String.length.我可以写

val f: String => Int = _.length
Run Code Online (Sandbox Code Playgroud)

要么

val f = { s: String => s.length }
Run Code Online (Sandbox Code Playgroud)

但是,这种语法并不总是理想的(特别是在较大的表达式中).我想我正在寻找能够实现表达式的东西

Lift[String](_.length)
Lift[Option[Int]].lift(_.filter)
Run Code Online (Sandbox Code Playgroud)

我记得这样的事情:

class Lift[T] {                                                          
   def apply[R](f: T => R): T => R = f

   def lift[A, R](f: (T) => (A) => R): (T, A) => R = 
         f(_)(_) 
   def lift[A1, A2, R](f: (T) => (A1, A2) => R): (T, A1, A2) => R =
         f(_)(_,_)
   // ... etc. ...
}
object Lift {
   def apply[T] = …
Run Code Online (Sandbox Code Playgroud)

scala

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

计算文本之间相似性的算法

我试图在社交网络的帖子之间得分相似,但没有找到任何好的算法,思想?

我刚刚尝试过Levenshtein,JaroWinkler和其他人,但是那些人更习惯于比较没有情感的文本.在帖子中我们可以得到一个文字说"我真的喜欢狗"和另一个说"我真的很喜欢狗",我们需要将这个案例归类为完全不同.

谢谢

java text nlp artificial-intelligence mining

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