代码之家  ›  专栏  ›  技术社区  ›  Michael Lorton

scala给了我“非法的定义开始”

  •  52
  • Michael Lorton  · 技术社区  · 14 年前

    我正试着开始使用scala,但无法离开启动门。

    由行组成的文件

    package x
    

    给我

    错误:定义的非法开头

    不管x是什么,也不管我把文件放在哪里(我有一个理论,我必须把文件放在目录层次结构中,以匹配包定义,但没有)。从网站和repl得到的示例代码也有同样的错误。

    4 回复  |  直到 6 年前
        1
  •  67
  •   Ben James    14 年前

    看起来你想申报 package scala脚本中的成员身份(使用 scala 命令)或在repl中。

    只定义类和对象的文件 scalac 可以定义为属于包。

    当您在脚本或repl会话中运行代码时,它实际上是在对象的方法中编译的,在该方法中,包声明的作用域是不合法的。

        2
  •  23
  •   qtwo skaffman    10 年前

    因为scala 2.11.0-m7你可以使用 :paste -raw (解决问题 SI-5299 )此选项允许在repl中定义包:

    scala> :paste -raw
    // Entering paste mode (ctrl-D to finish)
    
    package Foo
    
    class Bar
    
    // Exiting paste mode, now interpreting.
    
    
    scala> import Foo._
    import Foo._
    
    scala> new Bar
    res1: Foo.Bar = Foo.Bar@3ee2cf81
    
        3
  •  2
  •   dehasi    6 年前

    我也有同样的问题。我通过进口解决了这个问题 import packageName._ 而不是在包中声明工作表。

        4
  •  -1
  •   Daniel C. Sobral    14 年前

    我不明白这个错误。你是怎么编译的?顺便问一下,什么网站?至于repl,它不接受包。包仅用于编译的代码。