Mam nadzieję napisać metodę Scala, która pobiera krotkę dowolnego rozmiaru i typu wraz z indeksem i zwraca element w krotce w tym indeksie. Wiem, jak zrobić wszystko, ale zachować typ. Nie znalazłem jeszcze sposobu, aby zwrócić wartość dynamicznego typu krotki.Ogólna metoda gettera dla krotek w Scali, która zachowuje typ dynamiczny?
Oto funkcja mam tak daleko:
def subscript_get(tup: Product, index:Int): Any={
return tup.productElement(index)
}
Wykorzystanie na przykład byłoby:
subscript_get((0,1,2,3),0) --> Int = 0
subscript_get((0,1,"asdf",3),2) --> java.lang.String = asdf
wiem, że mogę rzucić wynik z powrotem potem do tego, czego szukam, ale to nie działa dla mnie, ponieważ nie zawsze wiem, do jakiego typu powinienem oddać.
Czy coś takiego jest możliwe? Dzięki!
Można to zrobić za pomocą makr w wersji 2.10, ale tylko w przypadku dosłownych argumentów "index" (i tylko z powodu tego (http://stackoverflow.com/q/13669974/334519) dziwnego "nieokreślonego, ale zamierzone "zachowanie". –
Niezależnie od makr, nie ma sensu mówić o udostępnianiu statycznych informacji dynamicznych. –
@TravisBrown dał ci dobrą odpowiedź na literalnie używane strony z telefonami. Czy możesz podać przykłady tego, co masz na myśli, aby nie literalnie używać wywołań dla 'subscript_get'? W szczególności, czy używasz 'produktu' w podpisie powyżej, ponieważ naprawdę chcesz, aby typ był odroczony do czasu wykonania lub używasz go, ponieważ chcesz streścić wszystkie możliwe typy produktów podczas kompilacji? –