4
내 스칼라 코드에서 암시 적 변수를 사용하여 실험하고 있습니다. 다음 샘플 코드를 작성했지만 불행히도 컴파일에 실패합니다. 내가 궁금해 하던데, 아무도 여기서 무엇을 놓치고 있는지 알고 있니?특성에 추상 형식 classof 액세스하는 스칼라
감사 (리눅스에 SBT 0.7.4와 스칼라 2.8.0을 사용하여), 알리
trait Feed
trait FeedFactory {
type T <: Feed
implicit val op_name = classOf[T].getCanonicalName
def create():T
def destroy(op:T)
}
Error: class type required but FeedFactory.this.T found
implicit val op_name = classOf[T].getCanonicalName
감사합니다. 암시적인 val을 사용하여 수정했습니다. op_name = { def op_name [T] (암시 적 m : scala.reflect.Manifest [T]) = {m.getClass.getCanonicalName}; op_name}하지만 암묵적인 변수를 정의 할 필요가 있기 때문에보기 흉한 것처럼 보입니다. 더 좋은 방법이 있습니까? –
@Ali with scala 2.8, def op_name [T : Manifest] = 암시 적으로 [Manifest [T]]를 사용할 수 있어야합니다. getClass.getCanonicalName' – shellholic
알리 솔루션이 작동하지 않습니다. 항상 Nothing을 반환합니다. 당신은 아마 val op_name = {def op_name [T] (implicit m : scala.reflect.Manifest [T]) = {m.getClass.getCanonicalName};을 작성해야합니다. op_name [T]} 그리고 오류 : X.this.T에 사용할 수있는 Manifest가 없습니다. –