标签: scala-script

Intellij-idea中的scala类,脚本和工作表有什么区别?

我正在使用Intellij-idea进行scala编程(使用sbt插件).

我想知道scala类,scala脚本和scala工作表之间的区别.当我们使用它们时?

如果您能通过一个简单的例子来解释它,这将是非常好的.

谢谢

scala intellij-idea sbt scala-script

19
推荐指数
2
解决办法
6733
查看次数

更短的Scala脚本标题

可以通过以下方式启动文本文件来在Scala中编写shell脚本:

#!/bin/sh
exec scala "$0" "$@"
!#
Run Code Online (Sandbox Code Playgroud)

为了简化脚本创建,我想编写一个名为scalash(可能是BASH脚本)的可执行文件,允许将Scala脚本标题缩短为一行:

#!/bin/scalash
Run Code Online (Sandbox Code Playgroud)

可能吗 ?如果我可以传递可选参数scalash,例如添加类路径依赖项,则需要额外的点数.

shell scripting scala scala-script

9
推荐指数
2
解决办法
1474
查看次数

Scala脚本不会在ubuntu上运行

所以我以前工作scala脚本试图在新的PC上运行它编译失败.

所以我制作了简单的脚本来测试:

#!/bin/sh
exec scala -J-Xmx2g "$0" "$@"
!#

println("test")
Run Code Online (Sandbox Code Playgroud)

并试图跑

test.scala 
error: Compile server encountered fatal condition: java.nio.ByteBuffer.clear()Ljava/nio/ByteBuffer;
java.lang.NoSuchMethodError: java.nio.ByteBuffer.clear()Ljava/nio/ByteBuffer;
at scala.tools.nsc.io.SourceReader.read(SourceReader.scala:61)
at scala.tools.nsc.io.SourceReader.read(SourceReader.scala:40)
at scala.tools.nsc.io.SourceReader.read(SourceReader.scala:49)
at scala.tools.nsc.Global.getSourceFile(Global.scala:395)
at scala.tools.nsc.Global.getSourceFile(Global.scala:401)
at scala.tools.nsc.Global$Run$$anonfun$30.apply(Global.scala:1607)
at scala.tools.nsc.Global$Run$$anonfun$30.apply(Global.scala:1607)
at scala.collection.immutable.List.map(List.scala:284)
at scala.tools.nsc.Global$Run.compile(Global.scala:1607)
at scala.tools.nsc.StandardCompileServer.session(CompileServer.scala:151)
at scala.tools.util.SocketServer$$anonfun$doSession$1$$anonfun$apply$1.apply(SocketServer.scala:74)
at scala.tools.util.SocketServer$$anonfun$doSession$1$$anonfun$apply$1.apply(SocketServer.scala:74)
at scala.util.DynamicVariable.withValue(DynamicVariable.scala:58)
at scala.Console$.withOut(Console.scala:65)
at scala.tools.util.SocketServer$$anonfun$doSession$1.apply(SocketServer.scala:74)
at scala.tools.util.SocketServer$$anonfun$doSession$1.apply(SocketServer.scala:69)
at scala.tools.nsc.io.Socket.applyReaderAndWriter(Socket.scala:49)
at scala.tools.util.SocketServer.doSession(SocketServer.scala:69)
at scala.tools.util.SocketServer.loop$1(SocketServer.scala:85)
at scala.tools.util.SocketServer.run(SocketServer.scala:97)
at scala.tools.nsc.CompileServer$$anonfun$execute$2$$anonfun$apply$mcZ$sp$1.apply$mcZ$sp(CompileServer.scala:218)
at scala.tools.nsc.CompileServer$$anonfun$execute$2$$anonfun$apply$mcZ$sp$1.apply(CompileServer.scala:213)
at scala.tools.nsc.CompileServer$$anonfun$execute$2$$anonfun$apply$mcZ$sp$1.apply(CompileServer.scala:213)
at scala.util.DynamicVariable.withValue(DynamicVariable.scala:58)
at scala.Console$.withOut(Console.scala:53)
at scala.tools.nsc.CompileServer$$anonfun$execute$2.apply$mcZ$sp(CompileServer.scala:213)
at scala.tools.nsc.CompileServer$$anonfun$execute$2.apply(CompileServer.scala:213)
at scala.tools.nsc.CompileServer$$anonfun$execute$2.apply(CompileServer.scala:213)
at scala.util.DynamicVariable.withValue(DynamicVariable.scala:58)
at …
Run Code Online (Sandbox Code Playgroud)

ubuntu scala scala-script

3
推荐指数
1
解决办法
2035
查看次数

编译Scala脚本.Scala脚本的工作原理如何?

Groovy的

Groovy带有一个名为的编译器groovyc.对于每个脚本,groovyc生成一个扩展的类groovy.lang.Script,其中包含一个main方法,以便Java可以执行它.已编译类的名称与正在编译的脚本的名称相匹配.

例如,使用此HelloWorld.groovy脚本:

println "Hello World"
Run Code Online (Sandbox Code Playgroud)

这就像这段代码:

class HelloWorld extends Script {
    public static void main(String[] args) {
        println "Hello World"
    }
}
Run Code Online (Sandbox Code Playgroud)

斯卡拉

Scala带有一个名为的编译器scalac.

例如,使用相同的HelloWorld.scala脚本:

println("Hello World")
Run Code Online (Sandbox Code Playgroud)

代码无效scalac,因为编译器期望类或对象定义,但在Scala REPL Interpreter中工作.怎么可能?在执行之前它是否包含在类中?

groovy scala jvm-languages scalac scala-script

0
推荐指数
1
解决办法
583
查看次数