es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tag: COVARIANCE

¿Se evalúa la expresión de manera diferente en la ventana de observación en comparación con la ejecución del código?

Tengo el siguiente código que verificará si un List<int> es compatible con el tipo IEnumerable<object>. La covarianza no se aplica a los tipos de valor, por lo que esta expresión debería evaluar como false. public class PruebasVentanaObservacion { [Hecho] public void AlEjecutar_DevuelveFalseEnCodigo_YTrueEnVentanaObservacion() { object listaDeEnteros = new List<int>(); var x . . . Read more

OCaml, significado de `!+` en `type `!+’a t` OCaml, significado de `!+` en `type `!+’a t` En OCaml, `!+` se refiere a una variable polimórfica, es decir, un tipo de dato genérico. En este caso, se utiliza en la definición del tipo `!+’a t`, lo cual indica que `!+` es un constructor de tipos que toma un parámetro `’a` y devuelve un tipo `t`. La letra `’a` representa un tipo arbitrario, es decir, puede ser cualquier tipo válido en OCaml.

Actualmente estoy aprendiendo sobre OCaml, y especialmente sobre funtores. He revisado el archivo map.mli de la biblioteca estándar, y alrededor de la línea 70, hay lo siguiente: type key (** El tipo de las claves del mapa. *) type !+’a t (** El tipo de los mapas desde el tipo . . . Read more

mypy: ¿Cuál es la necesidad de covariante en este TypeVar?

U = TypeVar(“U”, covariant=True) class IterableAndSized(Protocol[U], Sized, Iterable[U]): … Quiero crear un protocolo como el anterior que utilice las clases base abstractas Sized e Iterable para definir un tipo aceptable; por ejemplo, T = TypeVar(“T”) def tailvalue(index_from_rear: int, x: Iterable[T] | IterableAndSized[T]) -> T: if isinstance(x, Sized): for i, val . . . Read more