Assemblyscript: É possível chamar uma função estática no tipo genérico<t>?</t>

Criado em 15 mar. 2019  ·  3Comentários  ·  Fonte: AssemblyScript/assemblyscript

Exemplo:

class Temp {
  static decode(buf: Uint8Array): Temp {
    return new Temp(); 
  }
}

function decode<T>(buf: Uint8Array): T {
  return T.decode(buf);
}

let a = decode<Temp>(new Uint8Array());
question

Comentários muito úteis

Não, isso também não é possível no texto datilografado.
Mas você poderia fazer algo assim:

class Base {
  static decode<T>(buf: Uint8Array): T {
    return instantiate<T>(); // `instantiate` is AssemblyScript's builtin
  }
}

class Temp extends Base {
}

let a = Base.decode<Temp>(new Uint8Array(1));

Todos 3 comentários

Não, isso também não é possível no texto datilografado.
Mas você poderia fazer algo assim:

class Base {
  static decode<T>(buf: Uint8Array): T {
    return instantiate<T>(); // `instantiate` is AssemblyScript's builtin
  }
}

class Temp extends Base {
}

let a = Base.decode<Temp>(new Uint8Array(1));

Se você sabe que a saída é uma referência, pode usar a macro changetype assim.

changetype<T>(changetype<usize>(T.decode(buf)));

Você será responsável por garantir que a saída da função de decodificação corresponda à definição do tipo de dados T .

Isso não é seguro e você precisa saber o que está fazendo.

Obrigado

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

vladimir-tikhonov picture vladimir-tikhonov  ·  4Comentários

emil14 picture emil14  ·  3Comentários

MaxGraey picture MaxGraey  ·  4Comentários

kyegupov picture kyegupov  ·  3Comentários

blooddy picture blooddy  ·  3Comentários