Sobes.tech
Middle

Mi az a '===' operátor Ruby-ben?

sobes.tech MI

Válasz az MI-től

A === (három egyenlő) operátor Ruby-ban az úgynevezett case equality operator.

A case/when kifejezésekben használják, és osztályok által van definiálva, hogy ellenőrizze, a jobb operandus tartozik-e a bal operandus által jelzett "kategóriába" vagy "tartományba".

A === operátor viselkedése a bal operandus osztályától függ.

Példák:

  • Module osztály: Ellenőrzi, hogy a jobb operandus egy példány vagy leszármazottja-e a modulnak/osztálynak.
    # Ellenőrzi, hogy a jobb operandus egy String példány vagy leszármazottja.
    String === "hello"
    # => true
    
  • Range osztály: Ellenőrzi, hogy a jobb operandus benne van-e a tartományban.
    # Ellenőrzi, hogy az 5 benne van-e az 1..10 tartományban.
    (1..10) === 5
    # => true
    
  • Regexp osztály: Ellenőrzi, hogy a szöveg megfelel-e a reguláris kifejezésnek.
    # Ellenőrzi, hogy a "/ruby/" szöveg megfelel-e a /ruby/ reguláris kifejezésnek.
    /ruby/ === "/ruby/"
    # => true
    
  • Proc osztály: Meghív egy blokkot a jobb operandussal argumentumként.
    # Meghív egy blokkot az 5 argumentummal.
    ->(x) { x > 3 } === 5
    # => true
    
  • Symbol osztály: Összehasonlít egy szimbólumot egy másik szöveggel vagy szimbólummal.
    # Összehasonlítja a :test szimbólumot a "test" szöveggel.
    :test === "test"
    # => true
    

A legtöbb más osztályban a === úgy viselkedik, mint a ==.

Alkalmazás case/when-ben:

A case condition kifejezés egyenértékű egy sor === hívással minden when értéknél, a condition pedig a jobb operandus.

# Egyenértékű a String === value-vel
# Majd Integer === value
case value
when String
  # ...
when Integer
  # ...
end