Tag: 斯卡拉

斯卡拉 – 一个lambda参数可以匹配一个元组?

所以说,我有一些像列表 val l = List((1, "blue"), (5, "red"), (2, "green")) 然后我想过滤其中的一个,我可以做一些像 val m = l.filter(item => { val (n, s) = item // "unpack" the tuple here n != 2 } 有什么办法,我可以“解压”作为参数的lambda直接,而不是有这个中间itemvariables? 类似下面的东西会是理想的,但日食告诉我wrong number of parameters; expected=1 wrong number of parameters; expected=1 val m = l.filter( (n, s) => n != 2 ) 任何帮助将不胜感激 – […]

是否有一个在Scala中执行一个块的简短语法?

当我想重复执行n次时,我发现自己正在编写这样的代码: for (i <- 1 to n) { doSomething() } 我正在寻找这样一个简短的语法: n.times(doSomething()) Scala中是否存在这样的事情? 编辑 我想过使用Range的foreach()方法,但是这个块需要一个从未使用的参数。 (1 to n).foreach(ignored => doSomething())

折叠和折叠的方法区别

我不确定Scala中fold和foldLeft什么区别。 折叠和foldLeft或foldRight之间的区别? 有一个答案,谈到订购。 这是可以理解的。 但我仍然不明白为什么这样做(来自REPL): scala> Array("1","2","3").foldLeft(0)(_ + _.toInt) res6: Int = 6 但是这不是: scala> Array("1","2","3").fold(0)(_ + _.toInt) <console>:8: error: value toInt is not a member of Any Array("1","2","3").fold(0)(_ + _.toInt) ^ 这个错误信息是什么意思? 从文档中的这一行也令我感到困惑。 z – 折叠操作的中性元素; 可能被添加到结果的任意次数,并且不得改变结果(例如,Nil用于列表连接,0用于加法,或者1用于乘法)。 为什么会添加任意次数 ? 我认为折叠工作不同。

Scala地图foreach

给定: val m = Map[String, Int]("a" -> 1, "b" -> 2, "c" -> 3) m.foreach((key: String, value: Int) => println(">>> key=" + key + ", value=" + value)) 为什么编译器会抱怨? error: type mismatch found : (String, Int) => Unit required: (String, Int) => ?

Scala:为什么mapValues产生一个视图,是否有任何稳定的select?

刚才我很惊讶地发现mapValues产生一个视图。 结果如下例所示: case class thing(id: Int) val rand = new java.util.Random val distribution = Map(thing(0) -> 0.5, thing(1) -> 0.5) val perturbed = distribution mapValues { _ + 0.1 * rand.nextGaussian } val sumProbs = perturbed.map{_._2}.sum val newDistribution = perturbed mapValues { _ / sumProbs } 这个想法是,我有一个分布,这是随着一些随机扰动,然后我重新规范化。 代码实际上失败了,因为mapValues产生一个view , _ + 0.1 * rand.nextGaussian每当使用perturbed时总是重新评估_ + […]

如何将-D参数或环境variables传递给Spark作业?

我想在dev / prod环境中更改Spark作业的Typesafeconfiguration 。 在我看来,最简单的方法是将-Dconfig.resource=ENVNAME传递给作业。 然后Typesafeconfiguration库将为我做这个工作。 有没有办法直接把这个选项传递给工作? 或者也许有更好的方法来改变运行时的作业configuration? 编辑: 当我将–conf "spark.executor.extraJavaOptions=-Dconfig.resource=dev"选项添加到spark-submit命令时,没有任何反应。 我得到Error: Unrecognized option '-Dconfig.resource=dev'. 当我通过-Dconfig.resource=dev的火花提交命令。

Scala方法调用中括号的规则是什么?

是不是toList一个方法,将东西转换成一个List? 如果是的话,为什么我不能用括号? 我必须在这里失去更重要的东西。 这是一个例子: val l = Array(1,2,3).toList // works fine val l = Array(1,2,3).toList() // gives the error below 方法适用的参数不足:(n:Int)特征LinearSeqOptimized中的Int。 未指定的值参数n。

在Scala中asInstanceOf 和(o:T)有什么区别?

我看到有两种方法在Scala中投射一个对象: foo.asInstanceOf[Bar] (foo: Bar) 当我尝试,我发现asInstanceOf不使用隐式转换,而另一个。 这两种方法之间有什么不同? 在哪里推荐使用一个呢?

从string生成一个类,并在Scala 2.10中实例化它

在Scala 2.10中,我怎样从string(可能使用Toolbox api)生成一个类,然后用Scala的reflection来实例化?

在Scala中::和:::有什么区别?

val list1 = List(1,2) val list2 = List(3,4) 然后 list1::list2 returns: List[Any] = List(List(1, 2), 3, 4) list1:::list2 returns: List[Int] = List(1, 2, 3, 4) 我看到这本书写道,当使用::它也结果List[Int] = List(1, 2, 3, 4) 。 我的Scala版本是2.9。