我可以在Scala中重载括号吗?

试图找出如何重载类上的括号 我有以下代码: class App(values: Map[String,String]) { // do stuff } 我希望能够通过以下方式访问值映射: var a = new App(Map("1" -> "2")) a("1") // same as a.values("1") 这可能吗 您需要定义一个apply方法 class App(values: Map[String,String]) { def apply(x:String) =

Scala 流上奇怪的OutOfMemory错误

为什么要为以下代码获取OutOfMemoryError Stream.from1.filtern=>1到20.forallx=>n%x==0。head流对JVM有一些限制。您在这里看到的问题是,使用Stream.from1创建的流被放在堆栈上,因此JVM拒绝对其进行垃圾收集。传递给过滤器调用的谓词允许流增长到232792560个元素 如果使用迭代器,可以绕过此限制: Iterator.from(1).filter(n => (1 to 20).forall(x => n % x ==

如何在Scala中进行阵列模式匹配?

我的方法定义如下 def processLine(tokens: Array[String]) = tokens match { // ... 假设我想知道第二个字符串是否为空 case "" == tokens(1) => println("empty") 不编译。我该怎么做呢?case语句不是这样工作的。这应该是: case _ if "" == tokens(1) => println("empty") 对于您的示例,模式匹配可能不是正确的选择。您可以简单地执行以下操作:

scalacheck/scalatest未找到:如何在sbt/scala中添加它?

我从ubuntu12上安装了typesafe堆栈,然后创建了一个play项目(g8 typesafehub/play scala),现在我想将scalatest或scalacheck添加到我的项目中 因此,my_app/project/plugins.sbt有以下几行: // The Typesafe repository resolvers += "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/" /

Scala 有可能集成蛋糕模式和宏吗?

我必须在使用蛋糕模式的项目中集成一些宏。这种模式让我们避免了数不清的进口,还有其他优势,所以我们希望保持这种模式。现在,我们在主干外测试的一些实验性宏面临一个问题。首先,让我们展示一个名为Cake的虚拟系统: trait APiece { class A } trait BPiece { this: APiece => def aMacro(a: A): Unit = () /* macro ??? */ } trait CPiece { this: APiece with

T型和[T]型之间的scala差异

可能重复: 按照我的理解,以下两个类定义是相同的。那么除了语法之外,还有什么区别呢 abstract class Container[T] {} class IntContainer extends Container[Int] {} abstract class Container2 { type T } class IntContainer2 extends Container2 { type T = Int } 当我查看反编译的字节码时,我注意到第一个集合仍然具有泛型(尽管IntCo

Scala::树映射在更新后不平衡?

我想做的是能够调整TreeMap中项目的键顺序,所以 我可能可以通过一些静态数据找到一个对象,这些数据不会改变 如果贴图是展平的,则对象的位置应考虑其优先级 以下测试用例适用于numEntries=6,但不适用于大于7的值。我真的不明白那里出了什么问题,但我怀疑在一些更新/拷贝之后,树会被解除。所以,有人可以提出建议吗?是我的错还是Scala 2.9中的树形图有某种缺陷 如果循环失败,则更新 for (i <- 1 to (numEntries - 1)) { 替换为 for (i &l

Scala foldRight中令人费解的类型不匹配

有人能告诉我这个函数定义有什么问题吗 def incr[Int](l: List[Int]): List[Int] = l.foldRight(List[Int]())((x,z) => (x+1) :: z) Scala编译器抱怨传递给foldRight的函数体中存在类型不匹配: <console>:8: error: type mismatch; found : Int(1) required: String l.foldRight(L

使用AnyVals在Scala world中开发流畅风格的API,并通过隐式继承

我试图为具有流畅样式返回类型的JavaAPI提供Scala包装器API。具体来说,我希望Scala尽可能依赖AnyVal实例来减少分配 我已经找到了一个方法,它可以缓和这种流畅的返回,但问题是WriteStream无法返回调用它的实际类型的类型,因此在调用write之后将无法调用AsyncFile方法 需要一个具有类型类定义的包装器,该包装器能够返回所调用对象的类型,但我还没有设法使其完全工作。首先,我似乎无法获取隐式变量并将其传递给write()方法。其次,我认为隐式包装器的定义不正确,因为我

Scala 斯卡拉:“我的朋友。”;“覆盖受保护的val”;定义案例类构造函数时导致错误

我遇到了一些与case类和覆盖受保护的val相关的奇怪事情 trait T { protected def s: String def print(): Unit = println(s) } 假设trait T具有受保护的def(或val) 我可以用val s覆盖此方法def s。没问题 class A(override val s: String) extends T 嗯。它编译。但是这使得s公开,因为没有受保护的关键字 class B extends T { overrid

Scala 在Windows上,mvn jetty:run正常,但mvn jetty:run war失败

我正在用lift+scala开发一个web应用程序。一切都在Ubuntu Linux上运行。当我切换到Windows(生产环境)时,mvn jetty:run仍然有效,但是mvn jetty:run war不再有效,而且毫不奇怪,将war部署到jetty/tomcat在这个环境中也不起作用 下面是maven pom.xml 以下是运行mvn jetty时的错误消息:运行war或在生产环境中将其部署到jetty/tomcat服务器 系统环境变量CLASSPATH为空 mvn jetty:run

Scala 使用Slick Use Conf文件喷洒IO

我用的是喷雾器。喷雾剂实际上很容易使用,同样的道理也适用于Slick。然而,连接到数据库的臭名昭著的灵活方式如下: Database.forURL("jdbc:mysql://localhost:3306/SprayBlog?characterEncoding=UTF-8", user="xxxx", password="xxx", driver = "com.mysql.jdbc.Driver") withSession { implicit session =>

Scala 在元组序列中查找不常见元素

我试图返回每个用户都不通用的元素序列: val l1 = ("" , Seq( ("a" , 1) , ("b" , 2) , ("c" , 3) ) ) //> l1 : (String, Seq[(String, Int)]) = ("",List((a,1), (b,2), (c,3))) val l2 = ("" , Seq( ("a" , 4) , ("d" , 5) , ("c

如何提供Scala+;阿克卡+;驼峰SFTP(或FTP)消费者是否有要获取的文件列表?

我有一个应用程序(Scala 2.10.3、Akka 2.3.1、Camel 2.13.0),它订阅JMS主题,并在特定文件可供下载时通过JMS消息得到通知。每个JMS消息都包含可通过SFTP收集的文件的名称+路径 然后,我希望能够通过SFTP获取文件,但仅获取我们已收到JMS消息的文件(以避免可能获取正在编写的文件的问题) 我想要一个适合阿克卡骆驼和消费者模型的解决方案。我已经阅读了用于SFTP端点的和的Camel选项,但我需要以下方面的帮助: 如何定义可通过&filter=…在endpoi

Scala 未调用计划函数

使用Scala计划每X秒运行一次函数,这对我来说很有用: import scala.concurrent.duration._ import scala.concurrent.ExecutionContext import ExecutionContext.Implicits.global object Driver { def main(args: Array[String]) { val system = akka.actor.ActorSystem("system")

Scala-将两个序列组合成连续增加的三元组

解决以下问题的一种好的、有效的功能性方法是什么?在命令式风格中,这可以在线性时间内完成 给定两个排序序列p和q,f返回一个序列r(或任何集合)的三元组,其中对于r中的每个三元组(a、b、c),以下保持不变: (abc) 以下两种情况之一适用: a,c是两个连续的元素p,b位于q a,c是两个连续的元素q,b位于p 实例:考虑以下两个序列: val p = Seq(1,4,5,7,8,9) val q = Seq(2,3,6,7,8,10) 然后f(p,s)计算以下序列: Seq((1,2

Scala 泰坦分贝坏指数

我有一个titan db模式: val mgmt = getManagementSystem val guid = mgmt.makePropertyKey("guid").dataType(classOf[String]).make() mgmt.buildIndex("byGuid",classOf[Vertex]).addKey(guid).unique().buildCompositeIndex() mgmt.commit() mgmt.makePropertyKey("foo").

如何在scala中使用迭代器中以前存储的值?

我有 **=在此位置,我只想使用已更新的值 我怎样才能做到这一点呢?这应该可以做到 val a=列表1,2,3,4 val r=a.foldLeftList[Int]{ l、 e=>ife%2==0 e::l else l.fold0math.max_uu,uu::l }.反向 谢谢你的回答。。但是我已经更新了这个问题。当你还没有更新的值时,在**会发生什么?预期的结果是什么?我假设4,2,7应该变成4,2,2,对吗? var a = List (1,2,3,4,5) a.map( e =&g

Scala 创建在构造函数中具有隐式

是否可以创建一个在构造函数中具有隐式的akka参与者? 具有: 及 我可以使用上下文来创建这样的角色吗 implicit val service:Service = new Service() val someLong = 3 context.actorOf(FromConfig.props(Props(classOf[Actor], someLong)), "actor") 值得一提的是,服务无法传递给构造函数,因为可以接收多个不同的actor类,这些类使用范围中的不同隐式。在actor的伴

绕过Spark(Scala)中每个文件的最后一行

这个问题涉及到 我正在处理Spark中包含csv.gz文件的S3文件夹。每个csv.gz文件都有一个包含列名的标题。这已通过上述SO链接解决,解决方案如下所示: val rdd = sc.textFile("s3://.../my-s3-path").mapPartitions(_.drop(1)) 现在的问题是,某些文件的结尾似乎有换行符('\n')(我们假定不确定是哪个文件)。因此,在将RDD转换为数据帧时,我遇到了一些错误。现在的问题是: 如果每个文件的最后一行是“\n”,如何删除它?为

Scala 如何在Spark Cluster上执行Pregel最短路径,使所有顶点一次成为源顶点

我们使用Pregel API为3lac顶点寻找最短路径。我们应该使每个顶点作为源顶点一次,并确定所有这些执行中的最短路径。我的代码如下所示 def shortestPath(sc: SparkContext, mainGraph: Graph[(String, String, Double), Double], singleSourceVertexFlag: Boolean) { var noOfIterations = mainGraph.vertices.count(); // If si

Scala Spark数据帧:访问映射函数中的下一条记录

我有一个带有时间戳列的DF,按此列排序。有没有办法做到这一点:对于每条记录,访问下一条记录以计算两行之间的时间差?我认为这在map函数中是不可能的,因为这两行可能在不同的节点上处理 谢谢大家! 对于Spark 1.4或更高版本,如果您可以使用配置单元上下文,以下代码可能适用于您: import org.apache.spark.sql.hive.HiveContext import org.apache.spark.sql.expressions.Window import org.apache

Scala 与Poly的余积

我正在尝试使用shapeless创建一个poly2函数,它可以接受一个副积: case class IndexedItem( item1: Item1, item2: Item2, item3: Item3 ) case class Item1(name: Int) case class Item2() case class Item3() object IndexUpdater { type Indexable = Item1 :+: Item2 :+: Item3 :

Scala-使用扩展vs

我很困惑。在我现有的项目中,我无法找到extends和with之间的区别。你能帮我一下吗?在Scala中,你可以从类es(具体或抽象)和特质s继承。与只扩展一个类,但在Java中实现所需数量的接口类似,只允许继承一个类,但可以继承任意数量的trait 如果您正在扩展一个类,该类应立即跟随扩展关键字。您从中扩展的任何traits都应该跟在后面,用和关键字分隔 如果不扩展类,可以将第一个trait放在extends关键字后面,然后继续 就像在Java中一样,每个类都是Object的子类,无论您是否显

Scala-将Spark RDD中的字符串转换为日期

我有一个数据集,我正在将其读入spark RDD,其中日期以2016年9月的格式表示,还有20010901,在使用Case类创建RDD时,我需要将其转换为日期格式 比如说,, 案例类银行年龄:整数,职务:字符串,婚姻:字符串,教育:字符串,出生日期:20010901,财务月:2016年9月 如何将生日和FiscalMonth转换为Scala可以识别为日期的日期格式,其中日期可能是任意一种格式 我需要稍后将其拉入spark sql并对其运行一些查询。一种可能的方法: case class Pers

Scala 提升方法中的错误

我有一个使用隐式参数的方法。在2种情况下,我将其转换为函数时出错: 1: 然后我得到一个堆栈溢出错误 2: 然后我得到一个错误:缺少参数类型 我必须这样写: val f = (i:Int) => action(i) 没关系。如果“action”的参数不是隐式的,那么所有情况都是正确的。那么如何解释,我错过了什么 如果将函数的参数指定为隐式,则会邀请编译器为您提供该参数的值。那么编译器如何找到这些值呢?它查找在各种范围内声明为隐式值的相同类型的值(Int) (为了简单起见,在本例中我只使用

计算scala中的滑动持续时间

我有一个元组列表和如下所示的数据 val datum =("R",89) val dataList = Seq(("R",91),("R",95),("X",96),("S",98)) 我想计算列表中元素之间的持续时间,从数据开始,结果是 res0:> Seq(("R",7) , ("X",2)) //R - 96-89 , X - 98-96 我尝试过的东西不起作用 a我使用列表上的滑动,并使用带有累加器的模式匹配来保存值。这使用了一个布尔值和一个listBuffer来不断地向列表

Scalacheck-向命令添加参数

在有状态测试中,提到ATM机是一个用例。要使其工作,命令需要参数,例如PIN或取款金额。在给定的示例中,类计数器中的方法没有参数 现在我的问题是如何在scalachecks状态测试中测试这样的方法: class Counter { private var n = 0 def inc(i: Int) = n += i ... } 命令的run和nextState方法不提供参数。添加一个Random.nextInt将不起作用,因为在run和nextState中,值会不同,测

Scala Akka HTTP多文件上传到S3

我正在开发一个API,用Akka HTTP将多个文件上传到S3。我目前正在使用指令,它将所有文件缓冲到磁盘。这对可以处理的文件的大小进行了限制。有其他的方法吗?我还可以如何处理多部分/表单数据请求?下面是一个简单的示例,它以文件路径列表为例,将列表转换为单个源[ByteString,389;],并使用一个将数据上载到S3的接收器运行源: val paths = List(Paths.get("/path/to/file1"), Paths.get("/path/to/file2")) val s

Scala'中的类型不匹配;这是为了理解

我试图定义一个递归Scala函数,它看起来像这样: def doSomething: (List[List[(Int, Int)]], List[(Int, Int)], Int, Int) => List[Int] = (als, rs, d, n) => if (n == 0) { for (entry <- rs if (entry._1 == d)) yield entry._2 } else { for (entry &

变量已在Scala类中初始化,但它打印的内容为null?

我想我已经初始化的第一个性别,但是它打印的是空的。我试着在学生课堂上重写它,然后打印出来 这里是结果,第三行是人们的性别产出 我认为第5.1.4节的覆盖有相关信息 …覆盖成员的绑定。。。必须包含被重写成员的绑定 此外,我相信早期的定义语法就是为了解决这个问题而设计的 constructor zhu null derived constructor zhu zz female female 现在输出没有空值 我认为第5.1.4节的覆盖有相关信息 …覆盖成员的绑定。。。必须包含被重写成员的绑定 此

如何从scala中的Map.Entry集合中获取一组键或值?

我有一套地图。类似于scala中的set。现在我想在scala中获取设置的键(字符串)或值(ConfigValue)。请为这个问题提出一些简单的解决方案。 谢谢您可以使用.map将集合[map.Entry[String,ConfigValue]]转换为集合[String]和/或集合[ConfigValue]。但是请注意,您可能需要先转换到列表,以避免折叠重复项。因此,如果您有 val map: Set[Map[K, V]] = ??? val keys = map.flatMap(_.keyS

Scala 如何在Spark中支持“代码生成”和“已清洁的蓄能器”消息

我写了一份有火花的工作。工作进展顺利,没有任何问题。但是,当我查看错误日志文件时,我看到了太多类型的消息 [error] 18/11/25 17:28:14 INFO CodeGenerator: Code generated in 16.947005 ms 及 及 有没有办法抑制这些信息。他们把我的日志文件弄得太多了 不确定spark为什么将这些报告为错误。当它们看起来像某种调试消息时。创建SparkContext的对象时,使用以下代码根据需要设置日志级别: sparkContext.se

Scala 将Iterable[(双精度,双精度)]转换为Seq(Seq(双精度))

我想将成对RDD myRDD值从Iterable[Double,Double]转换为seqdouble,但是我不知道如何实现。我尝试了以下方法,但不起作用 val groupedrdd: RDD[BB,Iterable[(Double,Double)]] = RDDofPoints.groupByKey() val RDDofSeq = groupedrdd.mapValues{case (x,y) => Seq(x,y)} myRDD是在RddofPoints上使用groupByKey

错误:类型不匹配;找到:scala.this.Unit必需:scala.this.Int

您将add函数定义为返回Int,但不返回任何内容 更改为: class Demo { def add (x:Int, y:Int): Int = { val sum = x+y println(sum) } } val vvr = new Demo vvr.add(1,2) 现在可以将结果分配给变量 或者,您可以在函数定义中将Int更改为Unit def add (x:Int, y:Int): Int = { val sum = x+y

Spark-将新列添加到数据帧中,使列与给定的模式scala匹配

我想向dataframe追加一个现有列的新映射列,这些列以给定的公共前缀开头 例如,我输入了 {“Prefix_A”:“v_A”,“Prefix_B”:“v_B”,“Field”:“v”}, {“Prefix_A”:“v_A”,“Prefix_B”:“v_B”,“Prefix_C”:“v_C”,“Field”:“v”} 我想将所有字段与前缀“prefix_u”合并,并得到的输出 {“NewColumn”:{“Prefix_A”:“v_A”,“Prefix_B”:“v_B”},“Field”:“v

Scala 如何对JSString的JsArray进行模式匹配

例如,我有一个简单的作者JSON: { "name": "string", "articles": [ "string", "string", "string" ] } 我正在定义Json读取格式: implicit object authorFormat extends RootJsonFormat[Author] { override def write(a: Author) = ??? override def read(json: JsVa

如何在Scala项目中运行空手道测试

我在build.sbt文件中包含了空手道依赖项,我应该添加哪个文件夹结构的空手道功能文件,以及如何在Scala Play项目中进行测试? 有没有空手道Scala或Play应用程序测试的例子。基本上,我想测试我的Graphql Scala后端端点。 例如:我用这个测试黄瓜,效果很好 我尝试在setshell中运行test命令 我的build.sbt具有以下功能:, “com.intuit.karate”%“空手道核心”%“0.9.3” 以及使用哪个文件夹结构来放置我的功能文件以及如何运行scala

Scala 如何在单独的文件中读取具有标题定义的CSV文件?

我试图读取大型csv文件,该文件有一个单独的文件,其中包含列的标题,如下例 示例CSV part_000.CSV(管道分隔): 示例头文件\u头: 如何读取CSV文件并使用头文件分配架构?您可以基于头文件创建架构,然后使用架构读取数据: def defineType(str: String): DataType = { str match { case "date" => DateType case "integer" => IntegerType

Scala 在Spark Dataframe中动态透视多列

这就是我在数据帧中对两个枢轴列使用的方法,在数据帧中,我连接两个列,然后进行转置 // Define a udf to concatenate two passed in string values val concat = udf( (first: String, second: String) => { first + " " + second } ) def main (args: Array[String]) { // pivot using concatenated

lazy val solve forward引用如何扩展到scala中的值定义之上

下面是scala第5章中取自fp的流类型定义 sealed trait Stream[+A] case object Empty extends Stream[Nothing] case class Cons[+A](h: () => A, t: () => Stream[A]) extends Stream[A] 我们可以编写以下方法,该方法将返回 def constant[A](a: A): Stream[A]

Scala 为什么这个迭代器无限循环?

我正在尝试链接迭代器: var it=Iterator(1) 它,下一个 it=迭代器(2)+it 它,下一个 它是下一个 这将在hasNext上无限循环,如下所示: 如果运行此命令并在堆栈无限循环时检查堆栈,则堆栈在concetentation中循环: at scala.collection.Iterator$ConcatIterator.merge(Iterator.scala:213) at scala.collection.Iterator$Concat

Scala 如何使用隐式调用返回的函数而不分配给val

假设我有一个像这样的对象: object MyObj { def apply(args: List[String])(implicit v: Int): Unit => Int = (_: Unit) => args.length + v } 如果我想申请MyObj.apply,我必须: implicit val v = 5 val myObj = MyObj(List("a", "b", "c")) myObj()

猫用扁丝锥或scala丝锥

我很难理解猫flatTap的用途是什么 def flatTap[B](f: A => F[B]): F[A] = typeClassInstance.flatTap[A, B](self)(f) 事实上,我只是想挖掘一个用于记录的效果的值,然后返回该效果 看来scala 2.13 tap是一个不错的选择。但是,如果有这样的效果,我们需要进行测试: (Right(2).withLeft[Throwable]).tap(....) 关于如何在不太复杂的情况下实现这一点的任何建议,例如引入高

  1    2   3   4   5   6  ... 下一页 最后一页 共 990 页