小编Fre*_*lam的帖子

Scala函数式编程比传统编码慢吗?

在我第一次尝试创建功能代码时,我遇到了性能问题.

我从一个共同的任务开始 - 将两个数组的元素相乘并总结结果:

var first:Array[Float] ...
var second:Array[Float] ...    
var sum=0f; 
for (ix<-0 until first.length) 
    sum += first(ix) * second(ix);
Run Code Online (Sandbox Code Playgroud)

以下是我改革工作的方式:

sum = first.zip(second).map{ case (a,b) => a*b }.reduceLeft(_+_)
Run Code Online (Sandbox Code Playgroud)

当我对这两种方法进行基准测试时,第二种方法需要40倍的时间才能完成!

为什么第二种方法需要更长的时间?如何将工作改造为速度效率和使用函数式编程风格?

performance functional-programming scala

43
推荐指数
6
解决办法
7293
查看次数

M1在maven存储库中的含义是什么?

我一直在使用maven一段时间,我经常在选择我想要使用的版本之前查看存储库.我不完全理解扩展意味着什么.

我知道,当我看到像-RC1和-RC2这样的扩展时,意味着释放候选者.当我看到没有扩展名的版本时,我认为这意味着发布的版本.但-M1或-M2的扩展名是什么意思?

例:

2.8 RC1

2.8

2.8-M1 ??

versioning maven-2 maven

41
推荐指数
1
解决办法
7170
查看次数

在scala中,我可以将重复参数传递给其他方法吗?

这是我可以在java中做的事情,获取重复参数的结果并将其传递给另一个方法:

public void foo(String ... args){bar(args);}
public void bar(String ... args){System.out.println("count="+args.length);}
Run Code Online (Sandbox Code Playgroud)

在scala中它看起来像这样:

def foo(args:String*) = bar(args)
def bar(args:String*) = println("count="+args.length)
Run Code Online (Sandbox Code Playgroud)

但这不会编译,bar签名需要一系列单独的字符串,而传入的args是一些非字符串结构.

现在我只是绕过阵列.使用星号参数会非常好.有办法吗?

parameters methods scala variadic-functions

30
推荐指数
1
解决办法
1万
查看次数

如何使用@serializable scala对象?

我知道你可以将scala对象标记为@serializable,但我不明白之后如何处理该对象.我只是将其视为Java Serializable对象吗?

我想将对象序列化为字节流.有人能告诉我将序列化对象转换为字节数组或字符串的代码吗?

(谷歌对这个问题没有帮助)

关注:谢谢.我现在明白我可以像Java Serializable对象一样使用它.有时,明显的答案让我感到安慰.

serialization scala

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

你可以覆盖scala @serializable对象中的流编写器吗?

我现在明白scala @serializable对象可以和Java Serializable对象一样使用.在Java Serializable对象中,您可以覆盖以更改对象流的方式:writeObject(ObjectOutputStream)/ readObject(ObjectOutputStream).

你可以覆盖或注入scala @serializable对象的方法,允许你改变对象的序列化方式吗?

serialization scala serializable

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

什么时候scala部分函数不是部分函数?

在为部分函数创建String映射时,我遇到了意外行为.当我创建一个部分函数作为地图元素时,它工作正常.当我分配给val时,它会调用.尝试调用检查会生成错误.这是预期的吗?我在做一些蠢事吗?注释掉check()以查看调用.我正在使用scala 2.7.7

def PartialFunctionProblem() = {
    def dream()() = {
        println("~Dream~");
        new Exception().printStackTrace()
    }
    val map = scala.collection.mutable.HashMap[String,()=>Unit]()
    map("dream") = dream()      // partial function
    map("dream")()              // invokes as expected
    val check = dream()         // unexpected invocation
    check()                     // error: check of type Unit does not take parameters 
}
Run Code Online (Sandbox Code Playgroud)

functional-programming scala function partial-application partialfunction

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

使用lift-json,有一种简单的方法来提取和遍历列表吗?

我想我可能会遗漏list-json xpath架构中的一些基本内容.我能够提取和遍历列表的最流畅的方式如下所示.有人可以告诉我一个更好的技术:

class Example {

    @Test
    def traverseJsonArray() {

        def myOperation(kid:JObject) = println("kid="+kid)

        val json = JsonParser.parse("""
            {   "kids":[
                {"name":"bob","age":3},
                {"name":"angie","age":5},
            ]}
        """)

        val list = ( json \\ "kids" ).children(0).children
        for ( kid <- list ) myOperation(kid.asInstanceOf[JObject])

    }

}
Run Code Online (Sandbox Code Playgroud)

json scala list lift

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

是否有一个java实用程序来生成http多部分响应?

我正在构建一个返回多部分响应的Web服务.我知道构建多部分响应的格式; 如果我找不到现有的工具,我会建立自己的工具.

也许我只需要帮助我的google-foo.我发现的一切都是关于POST或消费多部分消息.没有关于产生多部分回复的信息.

java http response multipart

6
推荐指数
2
解决办法
4524
查看次数

scala中是否有一种方法可以在没有示例实例的情况下生成通用实例?

我正在玩创建一个通用工厂,如下所示:

trait Factory[T] { def createInstance():T = new T() }
val dateFactory = new Factory[Date](){}
val myDate = dateFactory.createInstance()
Run Code Online (Sandbox Code Playgroud)

'new T()'不编译,因为T在运行时未定义.我知道我可以通过将类的实例传递给某个方法来实现它(即createInstance(classOf [Date]))

我问是否有一些内省魔法可以取代'新T()',以便我可以创建我的超级简单工厂?

generics factory scala traits

5
推荐指数
1
解决办法
406
查看次数

Scala中是否有一个Pattern向Array对象添加方法?

Scala中是否有可以向Array对象添加方法的模式?

我在考虑将Int隐式转换为RichInt.但是这不可能,因为Array是最后一堂课.

arrays design-patterns scala final class

4
推荐指数
2
解决办法
952
查看次数

Maybes是scala的好模式吗?

有一段时间我一直在努力将scala与可能返回null的java方法集成.我想出了以下实用程序,它有很多帮助:

// produce an Option, nulls become None
object Maybe {
    def apply[T](t:T) = if (t==null) None else Some(t)
}

Maybe(javaClass.getResultCouldBeNull()).map( result => doSomeWork(result) )
Run Code Online (Sandbox Code Playgroud)

我对这个解决方案有几个问题:

  1. 是否有更好或更标准的模式可供使用?
  2. 我是否复制了已存在的内容?
  3. 这个功能有隐藏的陷阱吗?

java null scala option maybe

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