小编elm*_*elm的帖子

在Scala中使用带有Int的"或"运算符

我需要将数据拆分成列.空白空间必须分布在最终列中.因此,如果我有四个元素和三列,则列将具有以下数量的元素:2,1和1.

我需要知道有多少列已满.答案是:

val full = data.length % NUMBER_OF_COLUMNS
Run Code Online (Sandbox Code Playgroud)

问题是项目数是列数的倍数,这将返回零,这不是我想要的.所以我做到:

val full = if (data.length % NUMBER_OF_COLUMNS == 0) NUMBER_OF_COLUMNS else 
  data.length % NUMBER_OF_COLUMNS
Run Code Online (Sandbox Code Playgroud)

这有效,但感觉不像"Scala一样".这绝对是冗长而笨拙的,其余操作需要存储或执行两次.(在这里,我选择了后一种选择.)

有没有更好的办法?

在Python中,我所做的基本上是使用or运算符Int,如下所示:

full = len(data) % NUMBER_OF_COLUMNS or NUMBER_OF_COLUMNS
Run Code Online (Sandbox Code Playgroud)

完成.但我不能想到Scala中有类似的东西.它不存在还是我根本没有看到它?

scala

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

如何扩展Scala列表以不按显式位置而是按给定谓词/条件进行切片

对于

trait Item
case class TypeA(i: Int) extends Item
case class TypeB(i: Int) extends Item
Run Code Online (Sandbox Code Playgroud)

考虑一个Scala项目列表,例如

val myList = List(TypeA(1), TypeB(11), TypeB(12), 
                  TypeA(2), TypeB(21), 
                  TypeA(3), TypeB(31))
Run Code Online (Sandbox Code Playgroud)

目的是定义一个新slice方法,该方法可以应用到myList谓词或条件作为参数。例如

myList.slice { x => x.isInstanceOf[TypeA] }
Run Code Online (Sandbox Code Playgroud)

会提供

List(List(TypeA(1), TypeB(11), TypeB(12)), 
     List(TypeA(2), TypeB(21)), 
     List(TypeA(3), TypeB(31)))
Run Code Online (Sandbox Code Playgroud)

在此示例中,将通过以下方式获得相同的结果

myList.slice { case TypeA(x) => x < 10 }
Run Code Online (Sandbox Code Playgroud)

非常感谢。

collections scala list slice

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

按指定列排序Scala 2D数组

给定任何2D阵列,例如,

val in = Array( Array(59, 45, 32), 
                Array(20, 88, 5), 
                Array(49, 72, 89))
Run Code Online (Sandbox Code Playgroud)

我希望按第三列排序,这样

val out = Array( Array(20, 88, 5),
                 Array(59, 45, 32),                       
                 Array(49, 72, 89))
Run Code Online (Sandbox Code Playgroud)

非常感谢.

arrays sorting scala matrix

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

Scala可迭代到可迭代

例如,对于给定的迭代器

(1 to 9).grouped(3)
res: Iterator[scala.collection.immutable.IndexedSeq[Int]] = non-empty iterator
Run Code Online (Sandbox Code Playgroud)

如何将其转换为scala.collection.parallel.ParIterable?

parallel-processing iterator scala

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

如何在Scala中将Map [Symbol,List [A]]转换为List [Map [Symbol,A]]?

我需要转换一个

Map[Symbol, List[A]] to a List[Map[Symbol,A]] 
Run Code Online (Sandbox Code Playgroud)

但我找不到一个紧凑的代码片段(我想有一个非常紧凑的方法来实现这一点).

具体来说,我有一个

Map('a -> List("aa", "bb", "cc"),
    'b -> List("dd", "ee", "ff"),
    'c -> List("gg", "hh", "ii"))
Run Code Online (Sandbox Code Playgroud)

我想得到一个

List(Map('a -> "aa", 'b -> "dd", 'c -> "gg"),
    (Map('a -> "bb", 'b -> "ee", 'c -> "hh"),
    (Map('a -> "cc", 'b -> "ff", 'c -> "ii"))  
Run Code Online (Sandbox Code Playgroud)

请注意,第一个集合中的所有列表都具有相同的大小.

有帮助吗?

collections scala scala-collections

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

Scala中的整洁功能组合

构成函数的常用方法

def f(i: Int) = i + 1
Run Code Online (Sandbox Code Playgroud)

包括

f(f(1))
Run Code Online (Sandbox Code Playgroud)

然而,如何启用或定义更简洁的语法,如

f f 1
Run Code Online (Sandbox Code Playgroud)

在Scala的函数组合的简明语法中制定了类似的查询虽然不清楚如何达到这种简洁的语法.

更新如果可能,这怎么可能实现,至少以类似(整洁)的方式?

scala function-composition

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

专用Scala字符串插值

对于给定Map的常数

val ctt = Map("a" -> 1, "b" -> 2)
Run Code Online (Sandbox Code Playgroud)

如何定义String插值器c在哪里

c"a" 
Run Code Online (Sandbox Code Playgroud)

交付List(1)

注意已经考虑过字符串插值但仍不清楚如何继续.

更新

c"a,b"
res: List(1,2)

c" a, b  "
res: List(1,2)

c"a,w"
res: List(1)

c"w"
res: List()
Run Code Online (Sandbox Code Playgroud)

string scala string-interpolation implicit-conversion

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

Haskell中无限懒惰的因子

与Fibonacci系列类似的方式可以生成如下,

fibs :: [Integer]
fibs = 1 : 1 : zipWith (+) fibs (tail fibs)
Run Code Online (Sandbox Code Playgroud)

如何定义阶乘的系列.

更新

令人尴尬的是,在添加这个问题之前尝试了这个,

Prelude> let factorial = 2 : 6 : zipWith(*) factorial (tail factorial)
Prelude> take 5 factorial
[2,6,12,72,864]
Run Code Online (Sandbox Code Playgroud)

事实上,尾部的数字并不是连续的值.

haskell factorial lazy-evaluation

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

Scala sys.env用于未定义的环境变量

这个表达

sys.env("HOME")
Run Code Online (Sandbox Code Playgroud)

传递到主文件夹的路径; 通常sys.env("EnvVar")提供与之相关的价值$EnvVar.但是,对于$LIB未声明的环境变量

java.util.NoSuchElementException: key not found: LIB
Run Code Online (Sandbox Code Playgroud)

如何确定是否声明变量而不必捕获异常?

scala environment-variables

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

如何在Scala中将List [Any]转换为List(Int,Int)?

我有List[Any]哪些有价值

List((0,0), (1,1), (1,3), (2,2), (3,1))
Run Code Online (Sandbox Code Playgroud)

我想把它转换成

List[(Int,Int)]
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

scala

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