Tag: 斯卡拉

Scala和Kotlin的手动JAR编译

我正在尝试为Kotlin创建一个调用Scala代码的概念certificate。 以下是目前项目的情况: kotlin-src/ hello.kt scala-src/ Hello.scala 然后编译这两种语言: kotlinc kotlin-src/*.kt scalac scala-src/*.scala 在根目录下生成以下文件: META-INF/ main.kotlin_module HelloKt.class HelloScala.class 我试图变成一个JAR: jar cvfM run.jar *.class META-INF 但是,它不会运行(我认为这是因为我没有指定一个主类)。 $ java -jar run.jar Error: Invalid or corrupt jarfile run.jar 所以,我创建了以下清单: Main-Class: HelloKt 在编译jar之前,这个文件被复制到META-INF目录下,结果如下: HelloKt.class HelloScala.class META-INF/ META-INF/main.kotlin_module META-INF/MANIFEST.MF 新的JAR将执行,但总是失败并产生运行时exception。 $ java -jar run.jar Exception in thread “main” java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics at HelloKt.main(hello.kt) […]

Kotlin zipAll替代品

Kotlin的function是否像Scala中的zipAll一样? 在scala我可以做两个不同长度的数组的总和使用zipAll函数。 斯卡拉: val arrA = Array(1,2,3) val arrB = Array(4, 5) arrA.zipAll(arrB, 0, 0).map(x => x._1 + x._2) 或者在Kotlin中做到这一点的正确方法是什么?

如何在IntelliJ中为Scala配置代码清理

我最近从Eclipse切换到IntelliJ。 在Eclipse中,代码格式和代码清理是有区别的。 从我所知道的IntelliJ中有一个类似的概念。 我的源代码是用Scala编写的,而且我使用了Analyze -> Inspect Code…这显示了我潜在的问题。 看来我可以通过检查配置文件配置显示的内容。 这些设置列出了一大堆语言,包括Scala。 比方说,例如我将Empty-paren method accessed as parameterless设置Empty-paren method accessed as parameterless的Empty-paren method accessed as parameterless更改为错误。 现在检查显示为错误。 我想也许我现在可以运行Analyze -> Code Cleanup…来自动应用快速修复,但它什么都不做。 在“代码清理”对话框中单击“检查”配置文件时,此处的列表仅包含Java,Kotlin和“属性文件”。 所以我猜这些与Analyze的不同。 是否有可能在IntelliJ的Scala代码上运行代码清理(不格式化)?

与Java SAM没有2.12 M2标志的Scala互操作

有没有使用Java @FunctionalInterface / SAM / lambdaexpression式的Java-8 API编写Scala代码的公认技巧? 虽然Java lambdaexpression式inter-op在M2 http://www.scala-lang.org/news/2.12.0-M2中的一个标志下是可用的,但我更希望类/ AnyVal解决方案可能与scala一起工作functionX特点。 不幸的是,scala.FunctionX扩展AnyRef而不是Any,所以不能使用/混合这些特性到隐式的AnyVal类实现中。 补充:我不完全确定,即使scala.FunctionX是全球特征(从任何延伸)我如何实现我的目标。 我的用例是这样的: 在我的一个项目中,我选择了像Java Stream接口和类一样提供一个带有FunctionalInterfaces的Java-8 API,以便迎合尽可能广泛的基于JVM的客户端语言,例如Closure,Scala和Kotlin。 对于使用我的Java-8 API的每种客户端语言,如果在访问Java-8 API时,我将编写适当的绑定(如果需要的话)以使用特定于语言的习惯用法。 顺便说一句。 我也会对在Kotlin-Java互操作环境中提出的这个问题的任何评论感兴趣。

IntelliJ错误:构建过程exception终止

我刚刚安装了IntelliJ,我正在尝试构建一个Scala项目。 但是,每次我都会收到此错误消息: 信息:6/7/16,12:14 PM – 编译在10ms内完成1个错误和0个警告错误:构建进程exception终止:/Users/USERNAME/Downloads/jdk1.8.0_91/bin/java -Xmx700m -Djava。 awt.headless = true -Djava.endorsed.dirs = \“\”-Djdt.compiler.useSingleThread = true -Dpreload.project.path = / Users / USERNAME / IdeaProjects / Test -Dpreload.config.path = / Users / USERNAME /Library/Preferences/IdeaIC2016.1/options -Dcompile.parallel = false -Drebuild.on.dependency.change = true -Djava.net.preferIPv4Stack = true -Dio.netty.initialSeedUniquifier = 2119707358466010108 -Dfile.encoding = UTF-8 -Djps.file.types.component.name = CommunityFileTypes -Duser.language = en -Duser.country […]

Scala在同一个对象上执行多个操作而不重复它的名字

在kotlin中,有一个可以用来实现以下function的接收器function: fun alphabet() = with(StringBuilder()) { for (letter in ‘A’..’Z’) { append(letter) } append(“\nNow I know the alphabet!”) toString() } 所以你不必重复StringBuilder对象。 我想知道在Scala中做什么的语法?

Scala等同于Range的方式来自定义类

最近看Kotlin,你可以做..或者一些自定义类而不是Int或其他类。 Kotlin通过如下扩展函数来实现: operator fun <T: Comparable> T.rangeTo(that: T): ClosedRange这意味着只要你的类实现了Comparable接口,你可以免费得到它你可以这样做: val now = LocalDate.now() val vacation = now..now.plusDays(10) 我发现这很方便。 只是想知道我们怎么能在Scala中做到这一点,我知道我们应该通过types类来实现它吗? 也许是对还是错。 任何人都可以向我展示在Scala中最简单的方法吗? 看起来好像没有内置的LocalDate

伴侣对象具有实现接口的好处

为什么在Kotlin / Scala中,伴侣对象可以实现一些接口,这有什么好处呢? 何时使用此function是有用的?

在Scala中可以用“等价的方法”表示kotlin吗?

Kotlin Standard lib包含接收对象的’with’方法以及定义如下对象的方法: public inline fun with(receiver: T, block: T.() -> R): R = receiver.block() 并可以用作: val str = “string” with(str) { println(size)) // will print 6; equals to “string”.size println(substring(3)) // will print (ing); equals to “string”.substring(3) } 如何在Scala中定义类似的方法?

在同一个maven模块中可以混合使用Scala和Kotlin吗?

我正在使用由maven配置的Kotlin,正如这里所解释的: https : //kotlinlang.org/docs/reference/using-maven.html#compiling-kotlin-and-java-sources (但是只使用Java的src dir,用于Java和Kotlin文件)。 我们在工作一些Scala模块,按照这里所述进行配置: https : //dzone.com/articles/scala-in-java-maven-project 。 将两个maven插件放在一起的明显方式是行不通的。 斯卡拉不认识Kotlin文件。 在一个Maven模块中是否可以混合使用Java,Kotlin和Scala? 或者这些maven插件有冲突?