相关疑难解决方法(0)

在Scala中,"视图"有什么作用?

具体来说,我在这里看问题1

http://pavelfatin.com/scala-for-project-euler/

列出的代码如下

val r = (1 until 1000).view.filter(n => n % 3 == 0 || n % 5 == 0).sum
Run Code Online (Sandbox Code Playgroud)

我可以遵循除"视图"之外的所有内容.事实上,如果我拿出视图代码仍然编译并产生完全相同的答案.

scala

59
推荐指数
3
解决办法
9208
查看次数

在Scala中压缩任意嵌套集合的通用,类型安全方法?

有时候我会花一些时间和Scala一起玩,虽然在我自己的工作中无法使用Scala,但它的功能组合对我很有吸引力(到目前为止).对于踢,我决定以最通用的方式尝试前几个99 Haskell问题 - 操作并返回任何类型的适用集合.前几个问题并不太难,但我发现自己完全陷入了困境flatten.我只是无法弄清楚如何输入这样的东西.

具体来说我的问题是:是否有可能编写一个类型安全的函数来展平任意嵌套的SeqLikes?那么,比方说,

flatten(List(Array(List(1, 2, 3), List(4, 5, 6)), Array(List(7, 8, 9), List(10, 11, 12))))
Run Code Online (Sandbox Code Playgroud)

会回来的

List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12): List[Int]
Run Code Online (Sandbox Code Playgroud)

?请注意,这与Haskell和Scala问题集中的问题不完全相同; 我正在尝试编写一个函数来展平异构列表,而不是同构但嵌套的序列.

在网上搜索我找到了该问题的Scala翻译,但它运行并返回List [Any].我是否正确,这将需要某种类型的递归?或者我这样做是否比它更难?

scala scala-collections

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

这种递归List flattening如何工作?

前一阵子在Scala邮件列表上被询问并回答:

凯文:

给定一些嵌套结构:List[List[...List[T]]] 将它展平为最佳(最好是类型安全)的方法是什么List[T]

加斯帕:

隐含和默认参数的组合起作用:

case class Flat[T, U](fn : T => List[U]) 

implicit def recFlattenFn[T, U](implicit f : Flat[T, U] = Flat((l : T) 
=> List(l))) = 
   Flat((l : List[T]) => l.flatMap(f.fn)) 

def recFlatten[T, U](l : List[T])(implicit f : Flat[List[T], U]) = f.fn(l) 
Run Code Online (Sandbox Code Playgroud)

例子:

scala> recFlatten(List(1, 2, 3)) 
res0: List[Int] = List(1, 2, 3) 

scala> recFlatten(List(List(1, 2, 3), List(4, 5))) 
res1: List[Int] = List(1, 2, 3, 4, 5) 

scala> recFlatten(List(List(List(1, 2, 3), List(4, 5)), …
Run Code Online (Sandbox Code Playgroud)

scala implicit

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

标签 统计

scala ×3

implicit ×1

scala-collections ×1