Tag: scala

为什么没有参数列表的情况下不推荐使用?

为什么没有参数列表的案例类从Scala弃用? 为什么编译器build议使用()作为参数列表呢? 编辑: 有人请回答我的第二个问题…:|

为什么types级计算需要Aux技术?

我很确定我在这里错过了一些东西,因为我对Shapeless很陌生,而且我正在学习,但是何时需要 Aux技术? 我发现通过将它提升到另一个“伴侣” type定义的签名中,它被用来暴露一个type语句。 trait F[A] { type R; def value: R } object F { type Aux[A,RR] = F[A] { type R = RR } } 但是这不就是把R放在F的types签名中吗? trait F[A,R] { def value: R } implicit def fint = new F[Int,Long] { val value = 1L } implicit def ffloat = new F[Float,Double] { val […]

做一个能胜任的scala程序员是否需要你成为一个有能力的java程序员?

我非常喜欢Scala的美学风格,还有很多概念性的工作,比如打字系统和图书馆。 然而,当我开始修改Scala(并且看到我的一些同事修补它)时,我发现自己不得不挖掘越来越多的Java知识(特别是以库的方式)。 这给我带来了一些问题: 从来没有一个Java程序员,我不熟悉或不熟悉Java标准库或其他stream行的库(如Apache Commons)。 我在Java领域的google-fu很薄弱。 很难知道要search什么东西 – 一个问题因编程新手的大量无关的或基本的Java教程而加剧。 在这一点上,我不确定我是否应该咬紧牙关,尝试通过Javafind最快最全面的游览来追赶自己20年的Java开发,或者是否合理地继续尝试逐步补丁知识,我在周围徘徊scala。 Scala在我们当中所能提供的任何智慧都将不胜感激。 PS我毫不怀疑自己熟悉Scala语法的能力,而且我对函数式编程和scala社区中的范例感到满意和满意。 但程序员的能力不仅仅是以自己的能力为基础,而且也是一个人学习的能力,以及从别人那里采用工具和技能的能力。

Scala的缩放比其他JVM语言好吗?

这是我现在知道的唯一方法。 理解它,Scala使用Java虚拟机。 我以为Jruby也是。 Twitter将其中间件转换为Scala。 他们可以做同样的事情,并使用Jruby? 他们是否可以开始与Jruby开始,而不是他们的缩放问题,导致他们从Ruby转移到Scala呢? 我不明白Jruby是什么? 我假设,因为Jruby可以使用Java它将缩放在Ruby不会。 这一切都归结为静态与dynamictypes,在这种情况下?

是不是在尾部recursion风格的代码?

我有点新的斯卡拉试图读大卫波拉克开始Scala。 他定义了一个简单的recursion函数来加载文件中的所有string: def allStrings(expr: => String): List[String] = expr match { case null => Nil case w => w :: allStrings(expr) } 这是优雅和令人敬畏的,除了它已经引发了一个StackOverflowexception,当我试图加载一个巨大的字典文件。 现在据我所知,Scala支持尾recursion,所以函数调用不可能溢出堆栈,可能编译器不能识别它? 所以一些谷歌search后,我试着@tailrec注释来帮助编译器,但它说 error: could not optimize @tailrec annotated method: it contains a recursive call not in tail position def allStrings(expr: => String): List[String] = 我理解尾recursion错了吗? 我如何解决这个问题?

为什么Scala编译器不应用尾部调用优化,除非方法是最终的?

为什么Scala编译器不应用尾部调用优化,除非方法是最终的? 例如,这个: class C { @tailrec def fact(n: Int, result: Int): Int = if(n == 0) result else fact(n – 1, n * result) } 结果是 错误:无法优化@tailrec注释的方法:它既不是私有也不是最终的,因此可以被覆盖 如果编译器在这种情况下应用TCO ,究竟会出现什么问题呢?

Scala:返回布尔值的模式匹配的简短forms

我发现自己经常写这样的东西: a match { case `b` => // do stuff case _ => // do nothing } 有没有更简单的方法来检查一些值是否符合模式? 我的意思是,在这种情况下,我可以只写if (a == b) // do stuff ,但如果模式更复杂呢? 就像匹配列表或任意复杂的模式一样。 我想能够写这样的事情: if (a matches b) // do stuff 我相对比较新的斯卡拉,所以请原谅,如果我想念的东西大:)

如何将string拆分成Scala中的字符

例如,有一个stringval s = "Test" 。 你怎么把它分成t, e, s, t ?

在Spark Scala中重命名数据框的列名

我试图转换Spark-scala中所有的DataFrame的Headers / ColumnNames。 截至目前我拿出下面的代码,只取代一个单一的名字。 请帮忙。 for( i <- 0 to origCols.length – 1){df.withColumnRenamed(df.columns(i),df.columns(i).toLowerCase);}

dynamictypes在Scala中的实际用法

除了在JVM上集成dynamic语言之外,在Scala这样的静态types语言中, Dynamictypes还有哪些其他强大的用途?