Nói rằng tôi đang xác định một lớp điểm 2D đơn giản trong Scala, và tôi muốn để có thể xây dựng nó với các loại khác nhau:Tại sao các tham số kiểu được cho phép trong các nhà xây dựng phụ trợ của Scala?
class Point(x:Float, y:Float) {
this(x:Double, y:Double) = this(x.toFloat, y.toFloat)
this(x:Int, y:Int) = this(x.toFloat, y.toFloat)
// etc...
}
Tôi muốn đun sôi này xuống bằng một mẫu, chẳng hạn như:
class Point(x:Float, y:Float) {
this[T](x:T, y:T) = this(x.toFloat, y.toFloat)
}
tôi biết điều này sẽ không làm việc dù sao, kể từ khi T có thể là một loại mà toFloat không được định nghĩa, nhưng lỗi biên dịch tôi nhận được là:
no type parameters allowed here
đây có phải là chỉ unsupp in ở Scala? Nếu vậy, tại sao, và có cách nào đơn giản để giải quyết vấn đề này không?
Nếu bạn gọi phương thức này là 'áp dụng' thì bạn có thể viết,' val p = Điểm (1,2) ', không? –
Có, và đó là cách các trường hợp thực hiện. –