sách gpt4 ai đã đi

Yêu cầu kiểu phải có thể khởi tạo được, tức là không phải là đặc điểm/trừu tượng

In lại 作者:行者123 更新时间:2023-12-04 19:46:05 31 4
mua khóa gpt4 Nike

假设我有:

trait A

class B extends A

class C extends A

有没有办法配置类型参数:

class Foo[AType <: A with canCreateInstance]
def newAType : AType = new AType

这个想法是,Foo 只能采用实现 A 的类,如 B 或 C,但不能采用 A 本身。

1 Câu trả lời

尝试给特征一个伴生对象。伴随对象将是返回 AType 实例的对象。

对于伴随对象的使用:

trait Queue[T]{
def head:T
def tail:Queue[T]
def enqueue(x:T):Queue[T]
}

object Queue{
def apply[T](xs: T*): Queue[T] =
new QueueImpl[T](xs.toList)

private class QueueImpl[T](
private val leading:List[T],
private val trailing:List[T]=Nil
) extends Queue[T]
{
// methods in here
}
}

也许这更简单:

object A{

def aType(...):A = new B(...)

def aType(...):A = new C(...)


/* classes */

private class C(...) extends A

private class B(...) extends A{
// blah blah
}

}

关于scala - 要求类型是可实例化的,即不是特征/抽象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15028521/

31 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com