我对Scala很陌生,我正在阅读Scala书中的函数式编程,在他们的一个练习中,我发现了两个编译错误,我不明白为什么会有这些错误。下面的代码有以下两个错误:
error: value toList is not a member of Chapter5.Stream[Int]
val list : List[Int] = st.toList
^
Stream.scala:22: error: constructor cannot be instantiated to expected type;
found : Chap
我刚刚开始在scala (Eclipse)上开发Scala。我正在尝试创建一个新的项目,并编写一个示例hello程序来启动工作。这是我的示例程序:
object hello {
def main(args: String) = {
println("Hello World!");
}
}
我正在使用Java 8,在程序中我没有看到任何错误。但是,当我试图运行该程序时,会得到如下错误:
Error: Main method not found in class hello, please define the main method as:
public
我试图写这样一个简单的星星之火。当我在星火版10.4.x-scala2.12上的databricks笔记本上测试它时。同样的代码运行得很好。当我在一个打包的jar中运行这个程序并以相同的星火版本向databricks提交时,它会导致这样的异常,
例外:在spark.sql(sql_stat).show(false)
Job aborted due to stage failure.
Caused by: NoClassDefFoundError: Could not initialize class com.test.TestClass$
:
:
at com.test.TestClass$.
假设代码如下:
class base {
public:
int getAge(){
return 20;
}
};
class dri : public base {
public:
int getAge(){
return 30;
}
};
int main(){
base *b = new dri();
std::cout << b->getAge() << std::endl;
return 0;
}
我知道使用多态的魔力可以编译上面的代码,您可以在控制台中获得20,您也可以使用virtual关键字覆盖它们。
我的问题是,你为
我使用的是当前版本的TypeSafe Scala/eclipse IDE。我有一个对象(我将其命名为PositionObj,以便为其提供一个惟一的名称)。PositionObj包含一个main方法。然而,当我尝试Run as > Scala application时,我收到一条弹出消息,上面写着:
PositionObj needs to be an 'object' (it is currently a 'class').
实际上,它不是一个类,也不存在具有该名称的类。有没有想过为什么会发生这种情况,以及我如何绕过它?
以下是相关代码。
object P
我的scala解释器/编译器有一个非常奇怪的行为。
Welcome to Scala version 2.10.3 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_45).
Type in expressions to have them evaluated.
Type :help for more information.
scala> class Foo {
| def bar = {
| println("Foo is bar!")
| }
| }
defined
在Scala中,内部单例对象和匿名内部类似乎达到了相同的目的。它们之间有什么不同,我什么时候应该使用其中一个而不是另一个呢?
内单例对象:
object Main extends App {
object A {
val a = 7
}
println(A.a)
}
匿名内部类:
object Main extends App {
val A = new {
val a = 7
}
println(A.a)
}
我有一个小小的scala代码片段:
@SerialVersionUID(43L) class p(val a:Int=14,val b:Double=3.0) extends Serializable{
}
import java.io._
val out = new ObjectOutputStream(new FileOutputStream("my.obj"))
out.writeObject(new p(5,7))
out.close()
val in = new ObjectInputStream(new FileInputStream("my.obj
我听说在Scala中消除for循环并执行“Scala方式”是一个很好的实践。我甚至在找到了Scala样式检查器。在Scala中,for循环是不-不的吗?在的一个课程中,我找到了这个例子,这使我觉得for看起来是可以使用的,但是当然,在一行中使用Scala格式和语法,而不像传统的for在多行代码中看到的那样。参见我从Udemy课程中找到的示例:
val shipList = List("Enterprise", "Defiant", "Voyager", "Deep Space Nine")
for (ship <- ship
我试图检查nsc(新scala编译器)的代码。我对有点困惑。它的实施情况如下:
/* NSC -- new Scala compiler
* Copyright 2005-2013 LAMP/EPFL
* @author Martin Odersky
*/
package scala.tools
package nsc
import scala.language.postfixOps
/** The main class for NSC, a compiler for the programming
* language Scala.
*/
class MainClass e
我无意中遇到了这样的情况(示例被简化为隔离问题):
abstract class Element(val other: Element)
case object First extends Element(Second)
case object Second extends Element(First)
object Main {
def main(arguments: Array[String]) {
val e1 = First
val e2 = Second
println("e1: "+e1+" e1.other: "
我认为Scala中的“object”非常类似于Java中的Singleton,这并不被认为是一种好的设计实践。对我来说,单例就像是另一种定义全局变量的方式,这是不好的。我像这样写了一些Scala代码,因为它很简单,也很好用,但代码看起来很丑陋:
object HttpServer { // I'm the only HttpServer instance in this program.
var someGlobalState: State
def run() {
// do something
}
}
我在试着避免这样做。什么时候定义Scala对象是好的?
我正在学习Scala,所以如果这是一个愚蠢的问题,请容忍我。
我有这个包和一个类(将其简化为最简单的版本):
package Foo {
class Bar {}
}
然后在main.scala文件中我有:
import Foo.Bar
object test {
def main() {
val b = new Bar()
}
}
我为什么要得到这个:
test.scala:1:错误: Bar不是Foo的成员
它指向import语句。
我对Scala很陌生,在Scala中,我发现尽管println不是变量或方法,但它可以直接在类中编写,这怎么可能呢?
即使println是一种方法,我们为什么不按照方法的一般要求在类中定义它呢?为什么尽管它是一种方法,但在Java类中是不允许的,但是在Scala中是允许的呢?
例如。
class Hero {
println("running fine...") // Why is this println allowed in scala when its not inside a function?
}
object MainObject{
def
我已经在IntelliJ中安装了Scala插件和sbt执行器。
我创建了一个新的Scala项目,它创建了一个build.sbt文件。
在项目设置/库中,我看到了对我计算机上的SBT的引用。
我用以下代码创建了一个新的Scala类:
class RunMe {
def main(args: Array[String]): Unit = {
println("Hello from main of class")
}
}
我似乎找不到要为scala类创建的新类型的运行配置。
我没有看到左列中的绿色播放按钮(IntelliJ左格特),我遗漏了什么?
如何在代码中配置运行配
我正在学习Scala,同时也在编写一些程序。我被跟踪了
> error:could not find or load main class Animal
即使我删除了类或者重命名了类,我也会得到这个错误。我在src->main->scala->Animal(package)->Animal(class)中创建了这个程序。
我试图在谷歌和这个网站上搜索解决方案,但这对我没有帮助。请让我知道我错过了什么。我在Intellij上运行这个程序。
我在其他程序中也遇到了这个错误。
package Animal
class Animal {
def a:Int = 10
我在intellij中有一个模块,在那里我可以用java创建可以完美运行的main方法,但是当我在scala中创建它们并尝试运行它们时,我得到了以下结果:
Error: Could not find or load main class xxx
我的项目依赖于java和scala类。我需要做什么才能让scala主类运行?
编辑:
按照要求,下面是我尝试使用scala运行的主类的摘录。我知道代码没有问题,因为当我将intellij中的代码初始化为scala项目时,它可以正常工作。这里的问题是我从一个空白项目开始,所以我不知道intellij在幕后做了什么让scala主类正常运行。
object
有时,当我试图运行Kafka broker时,我会执行以下错误:
ERROR Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer)
kafka.common.InconsistentClusterIdException: The Cluster ID m1Ze6AjGRwqarkcxJscgyQ doesn't match stored clusterId Some(1TGYcbFuRXa4Lqojs4B9Hw) in meta.properties. The bro
在使用Scala编程时,我会做越来越多的函数式工作。但是,在使用中缀表示法时,很难区分什么时候需要括号,什么时候不需要。
例如,下面这段代码:
def caesar(k:Int)(c:Char) = c match {
case c if c isLower => ('a'+((c-'a'+k)%26)).toChar
case c if c isUpper => ('A'+((c-'A'+k)%26)).toChar
case _ => c
}
def encrypt(file:Str
我正在用akka做实验,我已经写了两个虚拟演员,他们的主要功能是:
HelloActor
package akkaSample.severalSystems
import akka.actor.{Actor, ActorSystem}
class HelloActor extends Actor {
def receive = {
case "mew" => println("I said mew")
case "hello" => println("hello back at you")