2011-02-04 1 views
7

tôi có thể tuyên bố một loại trừu tượng nhưScala chức năng nhận diện loại cấp trong một tham số kiểu

type A[B] 

và trong một lớp con xác định rằng khi

type A[B] = Option[B] 

nếu tôi muốn A đến là một lựa chọn . Và nếu tôi muốn A là B, tôi có thể làm điều này:

type A[B] = B 

Tôi có thể đạt được điều tương tự với thông số loại thay vì thành viên loại?

Trả lời

6

Hãy thử một tham số-kinded cao:

class Foo[A[_]] { ... } 

type Id[A] = A 

type Foo1 = Foo[Option] 
type Foo2 = Foo[Id] 
+1

Hoặc thậm chí, 'loại foo2 = Foo [({loại Id [a] = a}) # Id})]' – retronym

+1

@retronym - bạn đeo niềng răng không khớp! Một mở và hai để đóng không thể được quyền ... –

+0

Thanks guys, điều này những gì hữu ích! – n8han