Giả sử tôi đang cố gắng viết một trò chơi Tic-Tac-Toe đơn giản. Nó có một trường M x N. Trò chơi chỉ có một trường, vì vậy nó có thể được biểu diễn bằng một singleton object
. Như thế này:Làm cách nào để khởi tạo các vals đối tượng với các giá trị chỉ được biết khi chạy?
object Field {
val height : Int = 20
val width : Int = 15
...
}
Nhưng tôi không muốn mã hóa chiều cao và chiều rộng, vì vậy sẽ tốt nếu chúng có thể được truyền cho đối tượng trong thời gian chạy, thông qua hàm tạo hoặc thứ gì đó. Nhưng object
s không thể có nhà thầu.
Vâng, tôi có thể thay đổi height
và width
là var
s, và không val
s và giới thiệu một phương pháp mới
def reconfigure (h:Int, w:Int) = {
height = h
width = w
}
và gọi nó vào lúc bắt đầu của trò chơi. Nhưng nó cũng không tao nhã.
Vì vậy, có cách nào gọn gàng để thực hiện việc này - tức là có đối tượng được khởi tạo val
s với các giá trị không được biết trước khi chạy không?
Dường như mọi giải pháp sẽ yêu cầu 'var' ở đâu đó. Bạn đã xem xét làm cho 'Field' một lớp với các tham số hàm tạo chiều cao và chiều rộng? –
@KiptonBarros tôi đã làm. Nhưng tôi chỉ cần một ví dụ duy nhất của lớp đó. Vì vậy, tôi nghĩ rằng nó sẽ được _ideologically_ tốt hơn để sử dụng 'đối tượng'. –