IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

TypeScript Discussion :

Retourner une stricte égalité


Sujet :

TypeScript

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 191
    Points : 595
    Points
    595
    Par défaut Retourner une stricte égalité
    Bonjour,

    Je tente de comprendre ce script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      isSelected(product: Product): boolean {
        if (!product || !this.currentProduct) {
          return false;
        }
        return product.sku === this.currentProduct.sku;
      }

    D'après ce que je comprends, la méthode isSelected doit retourner non seulement le produit courant mais il faut qu'il soit identique à l'attribut product.sku.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    import {
      Component,
      EventEmitter,
      Input,
      Output
    } from '@angular/core';
    import { Product } from '../product.model';
     
    @Component({
      selector: 'products-list',
      templateUrl: './products-list.component.html'
    })
     
    export class ProductsListComponent {
      /**
      * @input productList - the Product[] passed to us
      */
      @Input() productList: Product[];
      /**
      * @output onProductSelected - outputs the current
      *
      Product whenever a new Product is selected
      */
      @Output() onProductSelected: EventEmitter<Product>;
      /**
      * @property currentProduct - local state containing
      *
      the currently selected `Product`
      */
      private currentProduct: Product;
      constructor() {
        this.onProductSelected = new EventEmitter();
      }
      clicked(product: Product): void {
        this.currentProduct = product;
        this.onProductSelected.emit(product);
      }
      isSelected(product: Product): boolean {
        if (!product || !this.currentProduct) {
          return false;
        }
        return product.sku === this.currentProduct.sku;
      }
    }
    Que se passe-t-il si product.sku n'est pas strictement égale (==) ? Il retourne false ? Il retourne null ? Il ne retourne rien (void) ?
    Dans ce cas, n'est-il pas plus simple d'écrire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      isSelected(product: Product): boolean {
        if (!product || !this.currentProduct || (product.sku != this.currentProduct.sku ) {
          return false;
        }
        return this.currentProduct.sku;
      }
    Merci de votre réponse.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    D'après ce que je comprends, la méthode isSelected doit retourner non seulement le produit courant mais il faut qu'il soit identique à l'attribut product.sku.
    Justement non, si vous regarder la signature de la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    isSelected(product: Product): boolean {
    Vous avez 2 informations :
    1) la fonction nécessite en paramètre d'entrée un objet de type Product
    2) la fonction retourne un booléen

    Après, pour mieux comprendre ce que fait la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (!product || !this.currentProduct) {
          return false;
        }
    la fonction retourne la valeur false si l'une des 2 conditions est remplie (le double pipe || est l'opérateur ou) :
    - si le paramètre de la fonction n'est pas instancié (à cause de !product )
    - si this.currentProduct, qui est l'attribut de la classe courante (ie, de la classe Product) n'est pas instancié (à cause de !this.currentProduct)

    Si les 2 conditions ne sont pas remplies, ie, si product et this.currentProduct sont tous les 2 instanciés, on exécute le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return product.sku === this.currentProduct.sku;
    L'opérateur triple égal est plus stricte que l'opérateur double égal :
    - l'opérateur triple égal : retourne vrai si les 2 objets qu'on compare sont égaux et de même type (ex: 1===1 retourne vrai, 1==="1" retourne faux)
    - l'opérateur double égal : retourne vrai si les 2 objets qu'on compare sont égaux, indépendamment de leurs types (ex: 1=="1" retourne vrai)
    Dernière modification par NoSmoking ; 17/10/2017 à 18h44. Motif: Coquille dans dernière égalité

Discussions similaires

  1. Réponses: 5
    Dernier message: 15/02/2005, 18h07
  2. Comment retourner une table !
    Par ptidoudou02 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 14/12/2004, 14h46
  3. fonction retournant une valeur
    Par ryan dans le forum ASP
    Réponses: 4
    Dernier message: 06/09/2004, 17h45
  4. Retourner une valeur avec une fonction
    Par stephtbest dans le forum ASP
    Réponses: 4
    Dernier message: 31/10/2003, 16h37
  5. [MFC] Retourner une liste d'objets
    Par 1cado dans le forum MFC
    Réponses: 10
    Dernier message: 28/07/2003, 12h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo