次の出力を説明することができます。私はこのような単純なScalaのコード..スカラのコンパニオンオブジェクト
object compOrNotTest {
def main(args: Array[String]) {
var emp = new Employee("tom", 20)
println(emp)
println(Employee.adult(emp))
Employee.printName("Roland", 38)
var emp2 = new Employee("Harry", 37)
Employee.printName(emp2)
}
}
class Employee(name: String, age: Int) {
val ageOfEmplyedd: Int = age
val nameEmp: String = name
override def toString() = this.name + " age : " + this.age
def printName() {
println("name is in Class " + nameEmp)
}
}
object Employee {
def adult(emp: Employee) = {
if (emp.ageOfEmplyedd > 18)
true
else
false
}
def printName(name: String, age: Int) = {
val emp1 = new Employee(name, age)
println("Name is : " + emp1.printName())
}
def printName(emp1: Employee) = {
//val emp1 = new Employee(name, age)
println("Name is : "+ emp1.printName())
}
}
を持っていると私は取得しています出力は、私の質問は、私は私だけName is :()
を取得していますコンパニオンオブジェクトから呼び出すいたときに、なぜということです
tom age : 20
true
name is in Class Roland
Name is :()
name is in Class Harry
Name is :()
です。私はName is : name is in Class Roland
のようなものを期待しています。この場合、scalaの仕組みを理解するために私を助けてください。ありがとうございました
あなたはそれがこの出力であるべきだと思いますか? ちょうど紙の中に入れてください。 'println("名前: "+ emp1.printName())'、 ここで、最初に 'emp1を実行すると、' Employee.printName( "Roland"、38) 'それはprint nameを呼び出します。 .printName() 'は" nameがClass Rolandにあります " を出力し、残りは" Name is :() "を出力します。 – Rumid
オクラホマ、はい、私の悪い....ありがとう、いくつかのどのように混乱して.... – Biswajit
@Biswajit私は助けることができるうれしいです。この質問はおそらくstackoveflowコミュニティには役に立たないでしょう(他の誰かが同じ問題を抱えてこの質問に達する可能性はありますか?)あなたはそれを削除することを検討することができます。 – Rumid