Questions tagged «scala»

Scala是主要针对Java虚拟机的通用编程语言。它旨在以简洁,优雅和类型安全的方式表达常见的编程模式,它融合了命令式和功能性编程风格。它的主要特征是:具有类型推断功能的高级静态类型系统;功能类型;模式匹配; 隐式参数和转换;操作符重载;与Java完全互操作性;并发

6
如何从Scala的资源文件夹中读取文件?
我的文件夹结构如下: - main -- java -- resources -- scalaresources --- commandFiles 在那个文件夹中,我必须读取文件。这是代码: def readData(runtype: String, snmphost: String, comstring: String, specificType: String): Unit = { val realOrInvFile = "/commandFiles/snmpcmds." +runtype.trim // these files are under commandFiles folder, which I have to read. try { if (specificType.equalsIgnoreCase("Cisco")) { val specificDeviceFile: String = …

8
Jvm需要很长时间才能解析localhost的IP地址
升级到macOS Sierra后,“ sbt测试”(包括查找本地主机名称/ IP地址)的性能似乎出现问题。在OS X的早期版本中,大约需要40-50秒才能完成。macOS Sierra时间远不止于此。我上次跑步大约是15分钟。编译时间与“ El Capitan”上的时间大致相同。 我是团队中唯一尝试此新macOS的人,因此我无法确定它是否仅在我的Mac上发生,还是普遍存在。 我的同事在Ubuntu上也有类似的问题,这与生成随机数有关,这减慢了测试的速度- 服务响应速度慢:Java SecureRandom和/ dev / random 不幸的是,这对我没有用。最初,我在JDK 8u54上进行了尝试,然后尝试更新为JDK 8u102,但这样做也没有帮助。 PS我正在运行Macbook Pro 2015年中的2.8GHz i7、16GB内存,1TB SSD。

3
Scala:将元素追加到数组的最佳方法是什么?
说我有一个Array[Int]喜欢 val array = Array( 1, 2, 3 ) 现在,我想将一个元素添加到数组,例如value 4,如以下示例所示: val array2 = array + 4 // will not compile 我当然可以System.arraycopy()自己使用并执行此操作,但是必须为此有一个Scala库函数,而我根本找不到。感谢您的指导! 笔记: 我知道我可以追加另一个元素数组,如以下行所示,但这似乎太过复杂了: val array2b = array ++ Array( 4 ) // this works 我知道List vs Array的优缺点,出于各种原因,在这里我对扩展Array特别感兴趣。 编辑1 感谢您指出:+操作员方法的答案。这就是我想要的。不幸的是,它比使用自定义append()方法的实现arraycopy要慢得多-慢了大约2到3倍。查看中的实现SeqLike[],将创建一个构建器,然后向其添加数组,然后通过该构建器完成附加操作,然后呈现该构建器。数组不是一个好的实现。我比较了这两种方法进行了快速基准测试,查看了十个周期中最快的时间。对一个类的8元素数组实例进行1000万次单项重复Foo需要3.1秒的时间:+和1.7秒的简单时间,该append()方法使用System.arraycopy();在Long的8个元素的数组上执行1000万个单项追加重复,:+使用简单append()方法花费2.1秒,花费0.78秒。想知道是否无法使用的自定义实现在库中解决此问题Array? 编辑2 对于它的价值,我提交了一张票:https : //issues.scala-lang.org/browse/SI-5017
111 arrays  scala  append 

9
私人[this] vs私人
在Scala中,我看到了诸如对象私有变量之类的功能。在我不太丰富的Java背景下,我学会了关闭所有内容(将其设为私有)并在必要时打开(提供访问器)。Scala引入了更严格的访问修饰符。我是否应该始终默认使用它?还是仅在某些情况下才需要使用它,即使对于同一类的对象,我也需要明确限制更改字段值?换句话说,我应该如何选择 class Dummy { private var name = "default name" } class Dummy { private[this] var name = "default name" } 第二个更严格,我喜欢它,但我应该始终使用它还是仅在有充分理由的情况下使用? 编辑:正如我在这里 看到private[this]的只是一些子情况,而不是this我可以使用其他修饰符:“包,类或单例对象”。因此,我将保留一些特殊情况。
111 scala 


4
如何使用JodaTime获取特定月份的最后日期?
我需要获取org.joda.time.LocalDate一个月的第一个日期(如)和最后一个日期。获取第一个是微不足道的,但是获取最后一个似乎需要一定的逻辑,因为月份的长度不同,而2月的长度甚至会随年份而变化。是否已经在JodaTime中内置了此功能,还是应该自己实现?
110 java  scala  jodatime 

5
Scala演员:接收与反应
首先让我说我有很多Java经验,但是直到最近才对函数式语言感兴趣。最近,我开始研究Scala,这似乎是一种非常不错的语言。 但是,我一直在Scala编程中阅读有关Scala的Actor框架的信息,有一件事我不理解。在30.4章中说,使用react代替receive可以重新使用线程,这对性能有好处,因为在JVM中线程很昂贵。 这是否意味着,只要我记得打电话react而不是receive,我就可以启动任意数量的Actor?在发现Scala之前,我一直在和Erlang一起玩,而Programming Erlang的作者自豪地介绍了20万个以上的过程而又不费吹灰之力。我讨厌用Java线程来做到这一点。与Erlang(和Java)相比,我在Scala中看到的是什么限制? 另外,该线程如何在Scala中重复使用?为了简单起见,我们假设我只有一个线程。我开始的所有参与者都将在该线程中按顺序运行,还是会进行某种任务切换?例如,如果我启动两个彼此进行乒乓球消息的演员,那么如果他们在同一线程中开始,是否会陷入僵局? 根据Scala编程的规定,编写要使用的演员比使用演员react困难receive。听起来似乎很合理,因为react没有回来。但是,本书继续说明了如何使用可以将react循环放入循环中Actor.loop。结果,您得到 loop { react { ... } } 在我看来,这与 while (true) { receive { ... } } 在本书的前面使用过。本书仍然指出,“实际上,程序至少需要几个receive”。那我在这里想念什么?除了回报之外还能receive做什么react?我为什么要在乎呢? 最后,进入我不了解的核心内容:这本书不断提到使用如何react使丢弃调用堆栈以重用线程成为可能。这是如何运作的?为什么有必要放弃调用堆栈?当函数通过抛出异常(react)终止而不能通过返回(receive)终止时,为什么不能丢弃调用堆栈呢? 我的印象是,Scala编程已经掩盖了这里的一些关键问题,这真是令人遗憾,因为否则它是一本真正优秀的书。


5
比较sbt和Gradle [关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 改善这个问题 我正在深入Scala并注意到sbt。我对Java / groovy项目中的Gradle感到非常满意,而且我知道Gradle有一个Scala插件。 在Scala项目中,为什么sbt胜过Gradle的充分理由是什么?
110 scala  sbt  gradle 

3
在Scala中将InputStream转换为字符串的惯用方式
我有一个方便的函数,已在Java中使用过,用于将InputStream转换为String。这是Scala的直接翻译: def inputStreamToString(is: InputStream) = { val rd: BufferedReader = new BufferedReader(new InputStreamReader(is, "UTF-8")) val builder = new StringBuilder() try { var line = rd.readLine while (line != null) { builder.append(line + "\n") line = rd.readLine } } finally { rd.close } builder.toString } 在Scala中有惯用的方法吗?

6
为简单案例类定义订购的简单惯用方式
我有一个简单的scala案例类实例列表,我想使用list.sorted,以可预测的字典顺序打印它们,但是会收到“没有为...定义隐式排序”。 是否存在为案例类提供词典编排顺序的隐式? 是否有简单的惯用方式将词典顺序混合到案例类中? scala> case class A(tag:String, load:Int) scala> val l = List(A("words",50),A("article",2),A("lines",7)) scala> l.sorted.foreach(println) <console>:11: error: No implicit Ordering defined for A. l.sorted.foreach(println) ^ 我对“ hack”不满意: scala> l.map(_.toString).sorted.foreach(println) A(article,2) A(lines,7) A(words,50)

2
Scala中的私有和受保护的构造函数
我一直对在Scala中没有显式主构造函数(仅是类主体的内容)的影响感到好奇。 特别是,我怀疑私有或受保护的构造函数模式,即通过伴随对象或另一个类或对象的方法控制构造可能没有明显的实现。 我错了吗?如果是这样,怎么做?
109 scala 


13
使用spark-csv编写单个CSV文件
我正在使用https://github.com/databricks/spark-csv,我正在尝试编写单个CSV,但是不能,它正在制作一个文件夹。 需要一个Scala函数,该函数将采用路径和文件名之类的参数并写入该CSV文件。

4
用Scala中的Option包装Java中的null返回方法?
假设我有一个方法,session.get(str: String): String但是您不知道它会返回字符串还是null,因为它来自Java。 在Scala中,有没有更简单的方法来解决此问题session.get("foo") == null?也许有些魔术适用ToOption(session.get("foo")),然后我可以像这样在Scala中对待它 ToOption(session.get("foo")) match { case Some(_) =>; case None =>; }
107 java  scala  scala-option 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.