Assemblyscript: ¿Es posible llamar a una función estática en un tipo genérico?<t>?</t>

Creado en 15 mar. 2019  ·  3Comentarios  ·  Fuente: AssemblyScript/assemblyscript

Ejemplo:

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

Comentario más útil

No, esto tampoco es posible en mecanografiado.
Pero podrías hacer algo como esto:

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 comentarios

No, esto tampoco es posible en mecanografiado.
Pero podrías hacer algo como esto:

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));

Si sabe que la salida es una referencia, puede usar la macro changetype esta manera.

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

Usted será responsable de asegurarse de que la salida de la función de decodificación coincida con la definición del tipo de datos T .

Esto no es seguro y necesitaría saber lo que está haciendo.

Gracias

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

torch2424 picture torch2424  ·  5Comentarios

jarble picture jarble  ·  3Comentarios

pannous picture pannous  ·  4Comentarios

andy-hanson picture andy-hanson  ·  4Comentarios

vladimir-tikhonov picture vladimir-tikhonov  ·  4Comentarios