小编Arm*_*min的帖子

调用eachParallel()时的Groovy(GPars)和MissingMethodException

当我在控制台中运行以下代码时(groovy 2.1.3):

strings =  [ "butter", "bread", "dragon", "table" ]
strings.eachParallel{println "$it0"}
Run Code Online (Sandbox Code Playgroud)

我明白了:

groovy.lang.MissingMethodException: No signature of method: java.util.ArrayList.eachParallel() is applicable for argument types: (ConsoleScript40$_run_closure1) values: [ConsoleScript40$_run_closure1@a826f5]
Run Code Online (Sandbox Code Playgroud)

谁能告诉我我做错了什么?

groovy missingmethodexception gpars

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

如何通过命令行将scalacOptions(Xelide-below)传递给sbt

我试图从命令行调用sbt 程序集将scalac编译器标志传递给elides(elide-below 1).

我已经设法通过将此行添加到build.sbt来获取build.sbt中的标志

scalacOptions ++= Seq("-Xelide-below", "1")

当我启动sbt并执行以下操作时,它也正常工作:

$> sbt                                                                                                                        
$> set scalacOptions in ThisBuild ++=Seq("-Xelide-below", "0")
Run Code Online (Sandbox Code Playgroud)

但是我想知道如何在启动sbt时传递它,以便我的CI作业可以在执行不同的程序集目标时使用它(即dev/test/prod).

scala sbt scalac

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

使用Groovy中的字符串访问地图映射的元素

鉴于我有一张地图:

def myMap = [ b : [ c:"X" ] ]
Run Code Online (Sandbox Code Playgroud)

还有一个字符串

def key = 'b.c'
Run Code Online (Sandbox Code Playgroud)

我想看看我使用密钥获取值'X'的选项.

我已经提出了两种方法来实现这一目标,但我对这些解决方案并不满意:

 1) Eval.me("theMap", myMap, "theMap.$key")
 2) mayMap."$key.split('\\.')[0]"."$key.split('\\.')[1]"
Run Code Online (Sandbox Code Playgroud)

任何人都有更好的方法在Groovy中这样做?

groovy map

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

在Scala中,如何在Map的二进制操作中将元组值分配给变量?

可能重复:
地图操作中的元组解包

可以说我有以下Map [Int,Double]:

scala> map
res19: scala.collection.immutable.Map[Int,Double] = Map(1 -> 1.1, 2 -> 2.2)
Run Code Online (Sandbox Code Playgroud)

我可以在其上运行以下foldLeft:

scala> map.foldLeft("A")((initVal,x:(Int,Double)) => initVal + x._1)
res20: java.lang.String = A12
Run Code Online (Sandbox Code Playgroud)

但是我找不到将元组的值赋给命名变量的方法:

scala> map.foldLeft("A")((init,x:(a:Int,b:Double)) => init + x.a)
<console>:1: error: ')' expected but ':' found.
   map.foldLeft("A")((init,x:(a:Int,b:Double)) => init + x.a)
                               ^
Run Code Online (Sandbox Code Playgroud)

甚至可以这样做吗?

scala tuples map

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

如何在Scala中编写这个递归的groupBy函数

最近我遇到了一个非常有用的groupBy函数,Groovy在Iterable上提供了这个函数:

public static Map groupBy(Iterable self, List<Closure> closures)
Run Code Online (Sandbox Code Playgroud)

您可以使用它来执行列表甚至地图上的递归groupBy,请参阅mrhaki此处的示例

我想编写一个在Scala中执行相同操作的函数.但刚刚开始我的Scala之旅,我对于如何定义和实现此方法感到很遗憾.特别是函数的泛型方面和此方法签名的返回类型超出了我的水平.

我需要更有经验的Scala开发人员来帮助我.

以下签名是完全错误还是我在球场?

def groupBy[A, K[_]](src: List[A], fs: Seq[(A) ? K[_]]): Map[K[_], List[A]]
Run Code Online (Sandbox Code Playgroud)

另外,如何使用正确的类型实现递归?

recursion types scala

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

标签 统计

scala ×3

groovy ×2

map ×2

gpars ×1

missingmethodexception ×1

recursion ×1

sbt ×1

scalac ×1

tuples ×1

types ×1