Trong một lớp học Scala, tôi thuận tiện có thể khai báo kiểu trả về của một phương pháp để có this.type
để đảm bảo rằng nó sẽ trở về cùng một đối tượng nó được gọi vào lúc:Làm thế nào tôi có thể cung cấp một bảo đảm thời gian biên dịch rằng phương pháp của tôi sẽ trả về cùng một đối tượng mà nó nhận được trong Scala?
class Foo {
def bar: this.type = this
}
Có cách nào tôi tương tự có thể chỉ định một phương thức chấp nhận thông số AnyRef
nhất định sẽ trả về chính xác tham chiếu đó? Đoạn sau đây không cung cấp bảo lãnh này, tôi có thể trở lại bất kỳ trường hợp A
:
def processAndReturn[A <: AnyRef](obj: A): A = {
// work with obj
obj
}
có lẽ, nhưng đó không phải là thực sự là điểm; Tôi quan tâm đến hệ thống kiểu và thời gian biên dịch đảm bảo nó có thể hoặc không thể cung cấp. 'này.loại' ví dụ là rất thuận tiện cho các cuộc gọi phương thức chuỗi trên cùng một đối tượng. –