小编Mic*_*ael的帖子

为什么maxBy只返回单项?

跟进这个问题,我不知道为什么 maxByTraversable[T]返回一个值T,而不是一个序列T(列表或类似).这看起来很常见.例如(来自上一个问题):

有关成绩的学生名单

List(Student("Mike", "A"), Student("Pete", "B"), Student("Paul", A))"

我想得到

List(Student("Mike", "A"), Student("Paul", A))

有没有人知道任何标准实现maxBy,它返回一系列找到的项目?

collections scala

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

关于Scala泛型的简单问题

X[Any]和之间有什么区别X[_]

例如,让我们考虑以下两个函数:

def foo(x:X[_]){}
Run Code Online (Sandbox Code Playgroud)
def foo(x:X[Any]){}
Run Code Online (Sandbox Code Playgroud)

上面这些声明之间究竟有什么区别?

generics scala

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

关于Scala延续的问题

据我所知shift,reset只是图书馆的功能.将所有延续内容实现为库并且Scala编译器没有做任何特殊工作来转换reset块内的代码是否正确?

continuations scala

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

移位在复位块中的位置是否重要?

假设有reset一个单独的块shift:

val r = reset { 
   // do smth. 1
   shift {...}
   // do smth. 2
   // do smth. 3
}

shift在不改变结果的情况下放置"do smth.2"或"do smth.3"之后是否正确rshift在一个reset街区的哪个地方并不重要是否正确?

continuations scala delimited-continuations

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

如何在Scala中将Range转换为SortedSet?

如果我想转换RangeSet我可以写

(0 to 9).toSet

如果我需要转换RangeSortedSet怎么办?我可以这样写:

scala.collection.immutable.SortedSet[Int]((0 to 9): _*)
scala.collection.immutable.SortedSet[Int]() ++ (1 to 9)

是否有意义?是否有任何"更好"(高效/简单)的转换Range方式SortedSet

collections scala

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

Scala中运行总和的流

这是我上一个问题的后续行动.
给定函数add_stream(s1:Stream[Int], s2:Stream[Int]):Stream[Int] 我想编码running_sums(s:Stream[Int]):Stream[Int],它返回一个新的流:s1, s1 + s2, s1 + s2 + s3, ...

我可以想到以下实现,但如果s是空的则它不起作用

def running_sums(s:Stream[Int]):Stream[Int] =
  Stream.cons(s.head, add_streams(s.tail, running_sums(s)))

我可以修复如下:

def running_sums(s:Stream[Int]):Stream[Int] =
  if (s.isEmpty) empty
    else Stream.cons(s.head, add_streams(s.tail, running_sums(s)))

然而它看起来并不优雅.

你会如何实施running_sums

scala stream

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

如何在Scala中修复部分和的实现?

这是我上一个问题的后续行动.我想s.scanLeft(0)(_ + _)自己实施(就像练习一样)

也就是说,我想写函数partial_sums,它接收流s = s1, s2, s3, ...并产生一个新的流s1, s1 + s2, s1 + s2 + s3, ...

我实现如下:

def add_streams(s1:Stream[Int], s2:Stream[Int]) =
  (s1 zip s2) map {case (x, y) => x + y}

def partial_sums(s:Stream[Int]):Stream[Int] =
  Stream.cons(s.head, add_streams(partial_sums(s), s.tail))

这段代码工作正常.然而,看起来需要O(n)来获得第n个元素partial_sums.(即s [1] + s [2] + s [3] ... + s [n]).我想编码 partial_sums[n] = partial_sums[n-1] + s[n],它采用O(1)来计算第n个元素.

这是对的吗?你会如何修复代码?

scala stream

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

文件系统上的抽象层和Java中的jar/zip

是否有一个Java库,它在文件系统和jar/zip上提供了一个抽象层.我检查了apache常见的vfs,但它不支持列出目录内容和Jar/Zip文件重命名等操作.

假设有一些代码,使用java.io.File它和它的朋友访问文件系统中的文件,如果这些文件在Jar/Zip中,我需要使它工作.我想找到一个非常类似的API java.io.File,以使代码重构更容易.

java jar file

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

在Scala中逐行读取和处理文件

假设我需要办理两个功能f: String => A,并g: A => B以每条线在一个大的文本文件来创建最终的名单B.

由于文件大,f而且g价格昂贵,我想作出处理并发.我可以使用"平行集合",并完成类似io.Source.fromFile("data.txt").getLines.toList.par.map(l => g(f(l)),但它不执行读取文件,fg同时进行.

在这个例子中实现并发的最佳方法是什么?

collections parallel-processing concurrency scala

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

如何在 Linux 中删除 /tmp/.java_pid<number> 文件?

我注意到/tmp/.java_pid<...>我的 Linux 机器中有很多文件。该file命令说它们是套接字。假设它们是由 Java 创建的,我想知道为什么 Java 不清理它们。如何让 Java 清理它们或不创建它们?

java linux

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