私はScalaを学び始めています。私は単純なクロスコンパイラを行います。JavaインターフェイスをScalaに変換する正しい方法ですか?
私はプリントのような小さな指示をサポートします。
注:コードスニペットはテストまたはコンパイルされません。
ここで私はJAVAで何をしますか。
public interface Compiler{
String getPrintInstruction();
}
public class JavaCompiler implements Compiler{
public String getPrintInstruction(){
return "System.out.print(arg0);"
}
}
public class ScalaCompiler implements Compiler{
public String getPrintInstruction(){
return "print(arg0);"
}
}
は正しい"Scalaの道" 以下抜粋ですか?
trait Compiler {
var printInstruction: String
}
class JavaCompiler extends Compiler {
var printInstruction = "System.out.print(arg0);"
}
class ScalaCompiler extends Compiler {
var printInstruction = "print(arg0);"
}
EDIT:
私は新しいスレッドに私の2番目の質問を移動します。
あなたはそれに価値を与えるまで、あなたが宣言された変数が定義されていません。 printInstructionの値を指定せずにCompilerを拡張しようとします。あなたが42のような文字列以外の値を与えても、それは本当に再宣言ではありません。 – thoredge
私は分かりません。 :trait型の変数printInstructionをオーバーライドString型のコンパイラ。変数printInstructionに互換性のない型があります – Farmor
スーパークラスの変数_declaration_に互換性のない型があるため、変数_definition_にエラーが発生します。 String型の変数printInstructionを宣言し、その値の値をたとえば "hi"と定義します。 javaとは異なり、定義を省略してデフォルト(nullまたは0)を取得することはできません。その点では、 'var x:String'はメソッドのように抽象メソッドです。その単語は使用されませんが、定義されていません。 – thoredge