Bài tập khá đơn giản từ Cay Horstmann's book «Scala for the impatient» khiến tôi khó hiểu. Đó là về primary
, auxiliary
và default primary
constructors:nhà thầu trong scala (tiểu học/phụ trợ/mặc định chính)
cũ 5.10: Hãy xem xét các lớp
class Employee(val name: String, var salary: Double) {
def this() { this("John Q. Public", 0.0) }
}
Rewrite nó để sử dụng các trường rõ ràng và một constructor chính mặc định.
Tôi không chắc chắn về việc mình phải làm. Có thể một số bạn đề xuất một giải pháp?
Tuy nhiên, cố gắng giải quyết bài tập này có thể đã làm cho tôi biết về một cái gì đó tôi đã không nhận thấy trước khi xây dựng về chính và val
lĩnh vực (như bạn thấy, tôi không hoàn toàn chắc chắn):
Am I phải không nếu tôi nói rằng trường val
(như name
trong lớp Employee
ở trên) chỉ có thể được khởi tạo thông qua hàm tạo primary
chứ không phải bởi một số auxiliary
? Trong trường hợp thứ hai, nó sẽ được xem xét bởi trình biên dịch như một sự phân công lại cho một trường val
gây ra lỗi.
Lúc đầu, tôi nghĩ rằng val
trường tương đương thô với các trường cuối cùng trong java mong rằng sẽ là hợp pháp khi chỉ định chúng lần đầu tiên trong bất kỳ nhà xây dựng nào nhưng có vẻ như tôi đã sai.
Tôi không hoàn toàn hài lòng với những gì chỉ có thể là một dự đoán hoang dã vì vậy tôi sẽ đánh giá cao nếu ai đó có thể cung cấp cho tôi thông tin chính xác hơn về điểm đó.
Tôi đã có câu hỏi chính xác này từ cùng một bài tập. Có lẽ tôi đang bối rối bởi những gì tác giả có nghĩa là "rõ ràng". – vmayer