为什么我能';不执行scala文件?

为什么我能';不执行scala文件?,scala,Scala,我是Scala的新手,这是我第一次运行Scala,当我安装Scala时,我创建了一个名为Hello.Scala的文件,内容是: println("HelloWorld!") 当我键入scala时,没有问题,显示了scala REPL,但当我键入scala Hello.scala时,它提示: <console>:1: error: ';' expected but '.' is found. :1:错误:';'应为,但找到“.”。 我不知道是什么问题,希望有人能帮我。你的文件你好

我是Scala的新手,这是我第一次运行Scala,当我安装Scala时,我创建了一个名为
Hello.Scala
的文件,内容是:

println("HelloWorld!")
当我键入
scala
时,没有问题,显示了scala REPL,但当我键入
scala Hello.scala
时,它提示:

<console>:1: error: ';' expected but '.' is found.
:1:错误:';'应为,但找到“.”。

我不知道是什么问题,希望有人能帮我。

你的文件
你好。scala
是一个脚本。您应该能够使用
scala Hello.scala
从命令提示符运行它

$ scala Hello.scala 
HelloWorld!
另一方面,REPL不用于运行脚本。它用于直接运行scala代码:

scala> println("HelloWorld!")
"HelloWorld!"

要在REPL中执行外部脚本(从中加载所有定义),请使用
:load
命令而不是
scala

»echo'println(“HelloWorld”)>Hello.scala
»斯卡拉
欢迎使用Scala版本2.9.2(OpenJDK客户端虚拟机,Java 1.6.0_24)。
键入要计算的表达式。
键入:有关详细信息的帮助。
//这就是你想做的吗?
scala>scala Hello.scala
:1:错误:';'应为“”,但找到“”。
你好,斯卡拉
//改为这样做
scala>:加载Hello.scala
加载你好,scala。。。
你好世界
斯卡拉>

只是我所知的一个总结。我曾经对如何正确运行scala文件感到困惑

总之,我们有三种方法来实现这一点:

  • 用于脚本文件。对于脚本,这意味着它与您在REPL中键入语句行相同,或者使用
    :paste
    模式粘贴多行。比如:

    println(“foo”)

  • 使用
    scalac
    编译包含main方法的对象。您可以
    扩展
    应用特性以轻松实现

    def main(参数:数组[字符串]):单位

  • 你可能会说:“你这个骗子,只有两种方法。”。但是对于第二个,我认为有太多的方法让它运行

  • scala-howtorun:objectobjectname-cp./“
    -cp
    仅用于保险
  • java-cp”/path/to/your/scala-jars“ObjectName
    :所以区别只是需要包括类路径

  • 如果您使用的是某种风格的Unix,那么可以将Scala脚本作为shell脚本运行 通过在文件顶部预加一个磅-砰指令

    例如,在名为
    helloarg
    的文件中键入以下内容:

    #!/bin/sh
    exec scala "$0" "$@"
    !#
    // Say hello to the first argument
    println("Hello, "+ args(0) +"!")
    
    首字母
    #/bin/sh
    必须是文件的第一行。
    设置其执行权限后:

    $ chmod +x helloarg
    
    您可以将Scala脚本作为shell脚本运行,只需说:

    $ ./helloarg globe
    
    如果您在Windows上,则可以通过命名 文件
    helloarg.bat
    并将其放在脚本顶部:

    ::#!
    @echo off
    call scala % 0 % *
    goto :eof
    ::!#
    
    • 添加
      -nc
      标志保存了我的一天

      scala-nc Hello.scala

    • 什么是
      -nc

      -nc无编译守护程序:不要使用fsc脱机编译器

      资料来源:

    • 什么是fsc脱机编译器

      fsc–Scala 2语言的快速离线编译器

      资料来源:


    这在mac中用于开发

    #!/usr/bin/env scala -nc
    println("hello");
    

    如果您是在scala REPL中执行它,您应该使用如下

    :load [scala file path]
    
    输出如下所示

    定义的“对象名”

    然后调用main方法作为下一个命令

    objectname.main(Array())
    
    有关详细信息,请参阅下面的url


    在主函数中写入
    println
    语句:

    object HelloWorld {   
     def main(args: Array[String]) {   
       println("Hello World!")   
     }   
    }
    

    然后执行:
    scala-nc HelloWorld.scala

    当您尝试运行scala时,请执行以下步骤:

  • 不要打开scala REPL
  • 在cmd提示符下使用
    scala
  • 下面是一个例子:

    scala/home/prakash/Desktop/babyname.scala


    注意:上述命令必须在unix cmd提示符中键入,而不是在scala repl中键入

    如何从sbt运行scala脚本?
    object HelloWorld {   
     def main(args: Array[String]) {   
       println("Hello World!")   
     }   
    }