Objet compagnon <:

scellé abstrait classe<:[-From, +To] extends (De) => A avec Serializable

Une instance de A <:< B est témoin que A est un sous-type de B. Exiger un argument implicite du type A <:< B encode la contrainte généralisée A <: B.

Pour contraindre tout type abstrait T qui est en portée dans la liste d'arguments d'une méthode (pas seulement les paramètres de type propre à la méthode), il suffit d'ajouter un argument implicite de type T <:< UU est la valeur supérieure requised; ou pour les limites inférieures, utiliser : L <:< TL est la limite inférieure requise.

En cas de confusion sur quelle méthode va dans quelle direction, toutes les méthodes "Co" (y compris appliquer) vont de gauche à droite dans le type ("avec" le type), et toutes les méthodes "Contra" vont de droite à gauche ("contre" le type). Par exemple, appliquer transforme un From en un To, et substitutContra remplace le Todans un type avec Froms.

En partie contribué par Jason Zaugg.

De

un type qui est prouvé un sous-type de To

A

un type qui est prouvé être un supertype de From

Annotations
@implicitNotFound("Impossible de prouver que ${From} <:< ${To}.")
Source
typeConstraints.scala

Exemple :

  1. scala.Option#flatten

    sealed trait Option[+A] {
      // def flatten[B, A <: Option[B]]: Option[B] = ...
      // won't work, since the A in flatten shadows the class-scoped A.
      def flatten[B](implicit ev: A <:< Option[B]): Option[B]
        = if(isEmpty) None else ev(get)
      // Because (A <:< Option[B]) <: (A => Option[B]), ev can be called to turn the
      // A from get into an Option[B], and because ev is implicit, that call can be
      // left out and inserted automatically.
    }
Voir aussi

=:= pour exprimer les contraintes d'égalité.

Supertypes linéaires
java.io.Serializable, (De) => A, AnyRef, Any
Sous-classes connues
=:=

Membres de la valeur abstraite

abstrait def substituteBoth[F [-_, +_]](ftf : F[To, From]): F[From, To]

Substituer To pour From et From pour To dans le type F[To, From]étant donné que F est contravariant dans le premier argument et covariant dans le second. Essentiellement, on échange To et From dans ftf.

Équivalent en puissance à chacun des substituteCo et substitutContra.

Cette méthode est impossible à mettre en œuvre sans throwing ou autrement "tricher", à moins que From <: To, il s'assure donc que cela représente réellement une relation de sous-typage.

renvoie à

ftfmais avec un type (potentiellement) différent

Membres concrets de la valeur

final def !=(arg0 : Tout): Booléen

Tester l'inégalité de deux objets.

renvoie

true si !(ceci ==cela), faux sinon.

Classes de définition
AnyRef → Any

final def ##(): Int

Équivalent à x.hashCode sauf pour les types numériques encadrés et null. Pour les numériques, il renvoie une valeur de hachage qui est cohérente avec l'égalité des valeurs : si deux instances de type de valeur comparent comme vrai, alors ## produira la même valeur de hachage pour chacune d'elles. Pour null renvoie un code de hachage où null.hashCode lance un NullPointerException.

renvoie

une valeur de hachage compatible avec ==

Classes de définition
AnyRef → Any

def +(autre : Chaîne de caractères): Chaîne de caractères

Implicite
Ce membre est ajouté par une conversion implicite de <:[From, To] toany2stringadd[<:[From, To]] effectuée par la méthode any2stringadd dans scala.Predef.
Classes de définition
any2stringadd

def ->[B](y : B): (<:[From, To], B)

Implicite
Ce membre est ajouté par une conversion implicite de <:[From, To] toArrowAssoc[<:[From, To]] effectuée par la méthode ArrowAssoc dans scala.Predef.Cette conversion n'aura lieu que si To est une sous-classe de Option.[Nothing] (To < : Option[Nothing]).
Classes de définition
FlècheAssoc
Annotations
@inline()

final def ==(arg0 : Tout): Booléen

L'expression x == that est équivalente à if (x eq null) that eq null else x.equals(that).

renvoie à

true si l'objet récepteur est équivalent à l'argument ; false sinon.

Classes de définition
AnyRef → Any

def andThen[C](r : <:[To, C]): <:[From, C]

def andThen[C](r : (Vers) => C): (De) => C

Compose deux instances de Function1 dans une nouvelle Function1, avec cette fonction appliquée en premier.

retourne

une nouvelle fonction f telle que f(x) == g(apply(x))

Classes de définition
<: → Fonction 1

def appliquer(f : De): A

Contraindre un From en un To. Cette fonction est garantie comme étant la fonction d'identité.

Cette méthode est souvent appelée de manière implicite en tant que A <:< B double comme une vue implicite A => B.

f

une valeur de type From

renvoie à

fmais avec un type (potentiellement) différent

Classes de définition
<: → Fonction 1

final def asInstanceOf[T0]: T0

Transforme l'objet récepteur en objet de type T0.

Notez que le succès d'un cast à l'exécution est modulo la sémantique d'effacement de Scala. Par conséquent, l'expression 1.asInstanceOf[String] lancera un ClassCastException au moment de l'exécution, tandis que l'expression List(1).asInstanceOf[List[String]] ne le fera pas. Dans ce dernier exemple, comme l'argument type est effacé dans le cadre de la compilation, il n'est pas possible de vérifier si le contenu de la liste est du type demandé.

renvoie

l'objet récepteur.

Classes de définition
Tout
Exceptions lancées

ClassCastException si l'objet récepteur n'est pas une instance de l'effacement de type T0.

def clone(): AnyRef

Créer une copie de l'objet récepteur.

L'implémentation par défaut de l'objet clone est dépendante de la plate-forme.

retourne

une copie de l'objet récepteur.

Attributs
protégé[java.lang]
Classes de définition
AnyRef
Annotations
@délais(classeOf[java.lang.CloneNotSupportedException])@native()
Note

non spécifié par SLS comme membre de AnyRef

def composer[C](r : <:[C, From]): <:[C, To]

def composer[C](r : (C) => De): (C) => Vers

Compose deux instances de Function1 dans une nouvelle Function1, avec cette fonction appliquée en dernier.

retourne

une nouvelle fonction f telle que f(x) == apply(g(x))

Classes de définition
<: → Fonction 1

def assurant(cond : (<:[From, To]) => Booléen, msg : => Tout): <:[From, To]

Implicite
Ce membre est ajouté par une conversion implicite de <:[From, To] toEnsuring[<:[From, To]] effectuée par la méthode Ensuring dans scala.Predef.
Classes de définition
Assurer

def assurer(cond : (<:[From, To]) => Booléen): <:[From, To]

Implicite
Ce membre est ajouté par une conversion implicite de <:[From, To] toEnsuring[<:[From, To]] effectuée par la méthode Ensuring dans scala.Predef.
Classes de définition
Assurer

def assurer(cond : booléen, msg : => Tout): <:[From, To]

Implicite
Ce membre est ajouté par une conversion implicite de <:[From, To] toEnsuring[<:[From, To]] effectuée par la méthode Ensuring dans scala.Predef.
Classes de définition
Assurer

def assurer(cond : booléen): <:[From, To]

Implicite
Ce membre est ajouté par une conversion implicite de <:[From, To] toEnsuring[<:[From, To]] effectuée par la méthode Ensuring dans scala.Predef.
Classes de définition
Assurer

final def eq(arg0 : AnyRef): Booléen

Teste si l'argument (that) est une référence à l'objet récepteur (this).

Le site eq met en œuvre une méthode relation d'équivalence sur les instances non nulles de AnyRef, et possède trois propriétés supplémentaires :

    Elle est cohérente : pour toute instance non nulle x et y de type AnyRef, des invocations multiples de x.eq(y) renvoie systématiquement true ou renvoie systématiquement falsePour toute instance non nulle x de type AnyRef, x.eq(null) et null.eq(x) renvoie false.
    null.eq(null) renvoie à true.

Lorsque l'on remplace l'option equals ou hashCode il est important de s'assurer que leur comportement est cohérent avec l'égalité des références. Par conséquent, si deux objets sont des références l'un à l'autre (o1 eq o2), ils doivent être égaux l'un à l'autre (o1 == o2) et ils doivent être hachés à la même valeur (o1.hashCode == o2.hashCode).

renvoie

true si l'argument est une référence à l'objet récepteur ; false sinon.

Classes de définition
AnyRef

def égale(arg0 : AnyRef): Booléen

La méthode d'égalité pour les types de référence. L'implémentation par défaut délègue à eq.

Voir aussi equals dans scala.Any.

renvoie à

true si l'objet récepteur est équivalent à l'argument ; false sinon.

Classes de définition
AnyRef → Any

def finaliser(): Unité

Appelé par le garbage collector sur l'objet récepteur lorsqu'il n'y a plus de références à l'objet.

Les détails de quand et si le finalize est invoquée, ainsi que l'interaction entre la méthode finalize et les retours et exceptions non locaux, sont tous dépendants de la plateforme.

Attributs
protégé[java.lang]
Classes de définition
AnyRef
Annotations
@délais(classeOf[java.lang.Throwable])
Note

non spécifié par SLS comme membre de AnyRef

def formaté(fmtstr : Chaîne de caractères): Chaîne de caractères

Renvoie une chaîne de caractères formatée selon les données format donnée. Les chaînes de formatage sont les mêmes que pour String.format (@voir java.lang.String.format).

Implicite
Ce membre est ajouté par une conversion implicite de <:[From, To] toStringFormat[<:[From, To]] effectuée par la méthode StringFormat dans scala.Predef.
Classes de définition
StringFormat
Annotations
@inline()

final def getClass(): Classe[_ <: AnyRef]

Renvoie la représentation de la classe d'exécution de l'objet.

retourne

un objet de classe correspondant au type d'exécution du récepteur.

Classes de définition
AnyRef → Any
Annotations
@native()

def hashCode(): Int

La méthode hashCode pour les types de référence. Voir hashCode dans scala.Any.

retourne

la valeur du code de hachage pour cet objet.

Classes de définition
AnyRef → Any
Annotations
@native()

final def isInstanceOf[T0]: Booléen

Teste si le type dynamique de l'objet récepteur est... T0.

Notez que le résultat du test est modulo la sémantique d'effacement de Scala. Par conséquent, l'expression 1.isInstanceOf[String] retournera false, tandis que l'expression List(1).isInstanceOf[List[String]] retournera true. Dans ce dernier exemple, comme l'argument type est effacé lors de la compilation, il n'est pas possible de vérifier si le contenu de la liste est du type spécifié.

renvoie

true si l'objet récepteur est une instance d'effacement de type. T0; false sinon.

Classes de définition
Tout

def liftCo[F [+_]]: <:[F[From], F[To]]

def liftContra[F [-_]]: <:[F[To], F[From]]

final def ne(arg0 : AnyRef): Booléen

Equivalent à !(this eq that).

renvoie à

true si l'argument n'est pas une référence à l'objet récepteur ; false sinon.

Classes de définition
AnyRef

final def notifier(): Unité

Réveille un seul thread qui est en attente sur le moniteur de l'objet récepteur.

Classes de définition
AnyRef
Annotations
@native()
Note

non spécifié par SLS comme membre de AnyRef

final def notifyAll(): Unité

Réveille tous les threads qui sont en attente sur le moniteur de l'objet récepteur.

Classes de définition
AnyRef
Annotations
@native()
Note

non spécifié par SLS comme membre de AnyRef

def substitutCo[F [+_]](ff : F[From]): F[To]

Remplacez le From dans le type F[From]F est un constructeur de type covariant, pour le type To.

Equivalent en puissance à chacun de substituteBoth et substitutContra.

Cette méthode est impossible à mettre en œuvre sans throwing ou autrement "tricher", à moins que From <: To, il s'assure donc que cela représente réellement une relation de sous-typage.

renvoie à

ffmais avec un type (potentiellement) différent

def substitutContra[F [-_]](ft : F[To]): F[From]

Remplacez le To dans le type F[To]F est un constructeur de type contravariant, pour le type From.

Équivalent en puissance à chacun de substituteBoth et substituteCo.

Cette méthode est impossible à mettre en œuvre sans throwing ou autrement "tricher", à moins que From <: To, il s'assure donc que cela représente réellement une relation de sous-typage.

renvoie à

ftmais avec un type (potentiellement) différent

final def synchronisé[T0](arg0 : => T0): T0

Classes de définition
AnyRef

def toString(): Chaîne de caractères

Crée une représentation de type String de cet objet. La représentation par défaut dépend de la plateforme. Sur la plateforme java, c'est la concaténation du nom de la classe, "@", et du hashcode de l'objet en hexadécimal.

retourne

une représentation sous forme de chaîne de caractères de l'objet.

Classes de définition
Fonction1 → AnyRef → Any

def déverrouiller: PartialFunction[From, B]

Convertit une fonction optionnelle en une fonction partielle.

Implicite
Ce membre est ajouté par une conversion implicite de <:[From, To] toUnliftOps[From, B] effectuée par la méthode UnliftOps dans scala.Function1.Cette conversion n'aura lieu que si To est une sous-classe de Option.[B] (To < : Option[B]).
Classes de définition
UnliftOps

Exemple :

    Contrairement à Function.unlift, cette méthode UnliftOps.unlift peut être utilisée dans les extracteurs.

    val of: Int => Option[String] = { i =>
      if (i == 2) {
        Some("matched by an optional function")
      } else {
        None
      }
    }
    
    util.Random.nextInt(4) match {
      case of.unlift(m) => // Convert an optional function to a pattern
        println(m)
      case _ =>
        println("Not matched")
    }

final def attendre(): Unité

Classes de définition
AnyRef
Annotations
@délais(classeOf[java.lang.InterruptedException])

final def attendre(arg0 : Long, arg1 : Int): Unité

Classes de définition
AnyRef
Annotations
@délais(classeOf[java.lang.InterruptedException])

final def attendre(arg0 : Long): Unité

Classes de définition
AnyRef
Annotations
@délais(classeOf[java.lang.InterruptedException])@native()