Nhìn vào ví dụ này:Làm cách nào để hiển thị đối số của hàm tạo Scala là thành viên công khai?
class Point(x: Double, y: Double){
override def toString = "x: " + x + ", y: " + y
def +(sourcePoint: Point) : Point = {
return new Point(x + sourcePoint.x, y + sourcePoint.y
}
}
Như bạn có thể thấy tôi muốn xác định một phương pháp +
điều hành trên lớp Point. Nhưng điều này sẽ không làm việc vì trong phương pháp đó, x
và y
không thể truy cập vào các biến địa phương sourcePoint
vì chúng là tư nhân, vì vậy tôi đã thay đổi ví dụ thành này:
class Point(_x: Double, _y: Double){
var x = _x
var y = _y
override def toString = "x: " + x + ", y: " + y
def +(sourcePoint: Point) : Point = {
return new Point(x + sourcePoint.x, y + sourcePoint.y)
}
}
Đó rõ ràng là làm việc, tuy nhiên là có một cách dễ dàng hơn để xác định các biến này thay vì đi từ _x -> x và _y -> y.
Cảm ơn sự giúp đỡ và thời gian! :)
Khi bạn viết 'điểm lớp (x: Double, y: Double)', 'x' và' y' chỉ là tham số cho hàm tạo chính, không được đệ trình trong lớp. Để tạo các trường của lớp, bạn cần 'val' hoặc' var'. – markmarch
Aight, cảm ơn! Có vẻ như bây giờ là haha;) – user1285925
Đây là một chút OT, nhưng không sử dụng trả về rõ ràng trong phương pháp '+' của bạn, trả về rõ ràng trong scala được dịch sang một ngoại lệ được ném và bắt trực tiếp và sau đó kết quả được trả về. Chỉ sử dụng điều này để thoát khỏi đóng cửa. – drexin