首页 > 解决方案 > 在线 IDE 运行以下 scala 代码

问题描述

我想测试以下 scala 代码。我想使用在线编辑器。我试过了scalafiddlejdoodle但都无法识别作品package。是否有可以运行以下代码的在线 IDE?

package P {
  object X { val x = 1; val y = 2 }
}

package Q {
  object X { val x = true; val y = "" }
}


package P {                  // `X' bound by package clause
import Console._             // `println' bound by wildcard import
object A {
  println("L4: "+X)          // `X' refers to `P.X' here
  object B {
    import Q._               // `X' bound by wildcard import
    println("L7: "+X)        // `X' refers to `Q.X' here
    import X._               // `x' and `y' bound by wildcard import
    println("L8: "+x)        // `x' refers to `Q.X.x' here
    object C {
      val x = 3              // `x' bound by local definition
      println("L12: "+x)     // `x' refers to constant `3' here
      { import Q.X._         // `x' and `y' bound by wildcard import
//      println("L14: "+x)   // reference to `x' is ambiguous here
        import X.y           // `y' bound by explicit import
        println("L16: "+y)   // `y' refers to `Q.X.y' here
        { val x = "abc"      // `x' bound by local definition
          import P.X._       // `x' and `y' bound by wildcard import
//        println("L19: "+y) // reference to `y' is ambiguous here
          println("L20: "+x) // `x' refers to string "abc" here
}}}}}}

标签: scala

解决方案


在 Scastie 中,尝试关闭Worksheet模式,然后extend App提供 main 方法,例如,尝试在 Scastie 中粘贴以下内容:

package P {
  object X { val s = "hello"}
}
package P {
  object Y { val s = "world"}
}

object Hello extends App {
  println(P.X.s)
  println(P.Y.s)
}

请注意,PQ示例应该在单独的编译单元中

假设在单独的编译单元中包 p 和 q 中名为 X 的对象有以下两个定义。

package p {   
  object X { val x = 1; val y = 2 }
}

package q {   
  object X { val x = true; val y = false } 
} 

这意味着它们应该在单独的.scala文件中。我不确定 Scatstie 中是否有多个文件。


推荐阅读