我需要将数据拆分成列.空白空间必须分布在最终列中.因此,如果我有四个元素和三列,则列将具有以下数量的元素: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中有类似的东西.它不存在还是我根本没有看到它?
对于
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)
非常感谢。
给定任何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)
非常感谢.
例如,对于给定的迭代器
(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?
我需要转换一个
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)
请注意,第一个集合中的所有列表都具有相同的大小.
有帮助吗?
构成函数的常用方法
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的函数组合的简明语法中制定了类似的查询?虽然不清楚如何达到这种简洁的语法.
更新如果可能,这怎么可能实现,至少以类似(整洁)的方式?
对于给定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) 与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)
事实上,尾部的数字并不是连续的值.
这个表达
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)
如何确定是否声明变量而不必捕获异常?
我有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)
我怎样才能做到这一点?