Intern
Čo robí metóda toString()?
sobes.tech AI
Odpoveď od AI
Metóda toString() poskytuje textové zobrazenie objektu. Zvyčajne sa používa na ladenie alebo zaznamenávanie, aby ste získali informácie o stave objektu v ľahko čitateľnom formáte.
Vo väčšine programovacích jazykov majú základné triedy štandardnú implementáciu toString(), ale odporúča sa ju prepísať v používateľských triedach, aby poskytovala zmysluplnejšie informácie.
Príklad prepísania v Jave:
// Trieda User
class User {
private String name;
private int age;
// Konštruktor
public User(String name, int age) {
this.name = name;
this.age = age;
}
// Prepisovanie metódy toString
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
// Metóda main pre príklad
public static void main(String[] args) {
User user = new User("Alice", 30);
System.out.println(user); // Vypíše reťazec získaný z toString
}
}
Príklad prepísania v Pythone:
# Trieda User
class User:
# Konštruktor
def __init__(self, name, age):
self.name = name
self.age = age
# Prepisovanie metódy __str__ (analóg toString v Pythone)
def __str__(self):
return f"User{{name='{self.name}', age={self.age}}}"
# Prepisovanie metódy __repr__ (predstavenie pre vývojára)
def __repr__(self):
return f"User(name='{self.name}', age={self.age})"
# Príklad použitia
user = User("Bob", 25)
print(user) # Vypíše reťazec z __str__
print(repr(user)) # Vypíše reťazec z __repr__
V JavaScripte:
// Trieda User
class User {
// Konštruktor
constructor(name, age) {
this.name = name;
this.age = age;
}
// Prepisovanie metódy toString
toString() {
return `User{name='${this.name}', age=${this.age}}`;
}
}
// Príklad použitia
const user = new User("Charlie", 35);
console.log(user.toString()); // Volá explicitne toString
console.log(user); // V prehliadačovej konzole môže byť automaticky volané
Hlavný účel toString():
- Ladenie: Umožňuje rýchly pohľad na obsah objektu.
- Záznam do logov: Uľahčuje zapisovanie informácií o objektoch do log súborov.
- Prevod na reťazec: Používa sa, keď je potrebný reťazcový zápis objektu (napríklad pri konkatenácii s reťazcom).