Nie znalazłem wyjaśnienia jego znaczenia. Otrzymuję definicję rekurencyjną: „Funkcja Slot zwraca lub ustawia informacje o poszczególnych gniazdach obiektów”
Wynika to z pomocy dotyczącej slot()funkcji - nie ma ona dokumentować, czym jest gniazdo, tylko jak uzyskać do nich dostęp.
Gavin Simpson,
Odpowiedzi:
87
Gniazda są połączone z obiektami S4. Szczelina może być postrzegana jako część, element lub „właściwość” obiektu. Powiedzmy, że masz samochód, wtedy możesz mieć sloty „cena”, „liczba drzwi”, „typ silnika”, „przebieg”.
Tutaj cena, liczbaDrzwi, typSilnik i przebieg to gniazda klasy S4 „Samochód”. To trywialny przykład, w rzeczywistości same gniazda mogą być ponownie złożonymi obiektami.
Do automatów można uzyskać dostęp na wiele sposobów:
lub poprzez budowę określonej metody (patrz dodatkowa dokumentacja).
Więcej informacji na temat programowania S4 można znaleźć w tym pytaniu . Jeśli ta koncepcja nadal brzmi dla ciebie niejasno, pomocne może być ogólne wprowadzenie do programowania obiektowego.
PS: Zwróć uwagę na różnicę w ramkach danych i listach, w których $uzyskujesz dostęp do nazwanych zmiennych / elementów.
Oprócz zasobów, na które wskazuje @Joris, a także jego własnej odpowiedzi, spróbuj przeczytać ?Classes, który zawiera następujące informacje na temat slotów:
Slots:
The data contained in an object from an S4 class is defined
by the _slots_ in the class definition.
Each slot in an object is a component of the object; like
components (that is, elements) of a list, these may be
extracted and set, using the function ‘slot()’ or more often
the operator ‘"@"’. However, they differ from list
components in important ways. First, slots can only be
referred to by name, not by position, and there is no partial
matching of names as with list elements.
....
To jest uzasadniony komentarz. Przyznajmy, że R jest pełen dziwacznych wyborów projektowych.
King Crimson
Rozumiem dziwną terminologię dotyczącą funkcji z lat 70., ale automatów do gier nie ma wśród nich, zostały dodane, gdy większość języków OO miała za sobą dziesiątki lat.
slot()
funkcji - nie ma ona dokumentować, czym jest gniazdo, tylko jak uzyskać do nich dostęp.Odpowiedzi:
Gniazda są połączone z obiektami S4. Szczelina może być postrzegana jako część, element lub „właściwość” obiektu. Powiedzmy, że masz samochód, wtedy możesz mieć sloty „cena”, „liczba drzwi”, „typ silnika”, „przebieg”.
Wewnętrznie jest to lista. Przykład :
setClass("Car",representation=representation( price = "numeric", numberDoors="numeric", typeEngine="character", mileage="numeric" )) aCar <- new("Car",price=20000,numberDoors=4,typeEngine="V6",mileage=143) > aCar An object of class "Car" Slot "price": [1] 20000 Slot "numberDoors": [1] 4 Slot "typeEngine": [1] "V6" Slot "mileage": [1] 143
Tutaj cena, liczbaDrzwi, typSilnik i przebieg to gniazda klasy S4 „Samochód”. To trywialny przykład, w rzeczywistości same gniazda mogą być ponownie złożonymi obiektami.
Do automatów można uzyskać dostęp na wiele sposobów:
> aCar@price [1] 20000 > slot(aCar,"typeEngine") [1] "V6"
lub poprzez budowę określonej metody (patrz dodatkowa dokumentacja).
Więcej informacji na temat programowania S4 można znaleźć w tym pytaniu . Jeśli ta koncepcja nadal brzmi dla ciebie niejasno, pomocne może być ogólne wprowadzenie do programowania obiektowego.
PS: Zwróć uwagę na różnicę w ramkach danych i listach, w których
$
uzyskujesz dostęp do nazwanych zmiennych / elementów.źródło
slot(aCar, "price")
tak jak innego wykorzystania, esp jako op patrzył naslot()
funkcjęgetSlots()
lubslotNames()
dla ich nazw.Podobnie jak
names(variable)
wyświetla listę wszystkich dostępnych$
nazw zmiennej złożonejslotNames(object)
wyświetla wszystkie szczeliny obiektu.Bardzo przydatne, aby dowiedzieć się, jakie gadżety zawiera Twój fit-obiekt, abyś mógł oglądać ją.
źródło
Oprócz zasobów, na które wskazuje @Joris, a także jego własnej odpowiedzi, spróbuj przeczytać
?Classes
, który zawiera następujące informacje na temat slotów:Slots: The data contained in an object from an S4 class is defined by the _slots_ in the class definition. Each slot in an object is a component of the object; like components (that is, elements) of a list, these may be extracted and set, using the function ‘slot()’ or more often the operator ‘"@"’. However, they differ from list components in important ways. First, slots can only be referred to by name, not by position, and there is no partial matching of names as with list elements. ....
źródło
Nie mam pojęcia, dlaczego R musi wszystko przedefiniować. Większość normalnych języków programowania nazywa je „właściwościami” lub „atrybutami”.
źródło