companion-object
Jakie jest uzasadnienie posiadania obiektów towarzyszących w Scali?
Czy istnieje przypadek, w którym potrzebny jest obiekt towarzyszący (singleton) dla klasy? Po co miałbym tworzyć klasę, powiedzmy Foo, a także tworzyć dla niej obiekt towarzyszący?
Jak działa magia metody apply () Scali?
W Scali, jeśli zdefiniuję metodę o nazwie apply w klasie lub obiekcie najwyższego poziomu, ta metoda będzie wywoływana za każ ... nsekwentne stosowanie mniejszego zestawu reguł, a nie wielu reguł z wieloma wyjątkami. Początkowo wydaje mi się to wyjątkiem.
Dlaczego obiekty towarzyszące klasy case rozszerzają FunctionN?
Kiedy tworzysz klasę case, kompilator tworzy odpowiedni obiekt towarzyszący z kilkoma zaletami klasy case: fabryczną metodą a ... e jako FunctionN:
object HasApply {
def apply(a: Int) = 1
}
val i = HasApply(1)
// fails
// HasApply: (Int => Int)