Tôi đang học Scala bằng cách thực hiện các bài tập từ cuốn sách "Scala for the Impatient". Một tập thể dục hỏi rằng:Ý nghĩa của từ khóa được bảo vệ trong định nghĩa lớp trong Scala là gì?
File Stack.scala chứa các định nghĩa
class Stack[+A] protected (protected val elems: List[A])
Giải thích ý nghĩa của
protected
từ khóa.
Ai đó có thể giúp tôi hiểu điều này? protected
rõ ràng là có ý nghĩa đối với các biến thành viên nhưng hàm ý của nó trong định nghĩa lớp là gì?
Cảm ơn bạn! Ý nghĩa của '+ A' là gì? –
Nó có nghĩa là 'Stack' là biến thể trong tham số generic' A', có nghĩa là 'Stack [Dog]' là một 'Stack [Animal]'. Nếu bạn không thêm dấu cộng, thì phép gán 'val x: Stack [Animal] = Stack [Dog] (Dog (" Pluto "))' là bất hợp pháp. –
Yeah trong Java, 'Danh sách' không phải là 'Danh sách '. Vì vậy, contravariance là '-A' sau đó? Nếu vậy, tôi đoán người ta có thể viết 'class stack [+ A] (elems: List [-A])'? –