3
私は、次のScalaのソースコードをコンパイルして実行してみました:ScalaのArrayとArray [Type]の違いは何ですか?
class People(val name: String)
class Student(studentName: String) extends People(studentName)
def getNames(array: Array[People]) = { array.map(_.name) }
getNames(Array[Student](new Student("Mike"), new Student("Tom")))
私はエラーメッセージました:予想通りアレイ[学生]配列のサブタイプではないので、それは[ピープル]です
Name: Compile Error
Message: <console>:30: error: type mismatch;
found : Array[Student]
required: Array[People]
Note: Student <: People, but class Array is invariant in type T.
You may wish to investigate a wildcard type such as `_ <: People`. (SLS 3.2.10)
getNames(Array[Student](new Student("Mike"), new Student("Tom")))
を。
は、それから私は、エラーが消えていた
getNames(Array(new Student("Mike"), new Student("Tom")))
に
getNames(Array[Student](new Student("Mike"), new Student("Tom")))
を更新しました。だから私はScalaでArrayとArray [型]の違いは何か、特にメソッドのパラメータとして渡されたときにはどうかと思っています。
ありがとうございます!
お返事ありがとうございました。 – ihainan
申し訳ありませんが、この回答の2番目の部分は間違っています。 "非汎用"配列を取得していない場合、期待される型の型は 'getNames'メソッドによって提供されるため、' Array [People] 'を取得しています。 –