2015-08-13 3 views
0

я назвал первые() методы искры РДДА, и он вернулся объект, который выглядит следующим образом:Доступ к членам объекта Scala

session: Any = (SessionKey{m_sessionId=91249793986979128, m_publisherId=196, m_sessionStartTimeTimeSlice=1439164800000},Session{m_pageViewsIds=[ViewId [m_viewId=1439166315327]]}) 

Как я могу получить доступ к переменным-членам этого объекта?

Когда я бегу session.getClass, результат:

Class[_] = class scala.Tuple2 

Тем не менее, когда я пытаюсь получить доступ к членам _1 и _2, я получаю следующее сообщение:

error: value _1 is not a member of Any 
session._1 

Когда Я стараюсь, чтобы бросить его, вызывая session.asInstanceOf [(SessionKey, сессия)] ._ 1, я получаю:

error: not found: type SessionKey  
session.asInstanceOf[(SessionKey, Session)]._1 
error: not found: type Session 
session.asInstanceOf[(SessionKey, Session)]._1 
+0

Точно так же вы получаете доступ к переменным-членам любого объекта. Что вас беспокоит? – resueman

+0

Я не знаком с Scala. Можете ли вы привести пример для чтения, скажем, m_publisherId? –

+0

Если вы удаляете тип 'Any' из переменной, это будет просто' session._1.m_publisherId' – resueman

ответ

0

Если вы всегда ожидать сессии, чтобы быть того же типа, а затем сделать явное приведение к этому типу:

val sessionWithType = session.asInstanceOf[(SessionKey, Session)] 
sessionWithType._1 

Если вы не уверены типа, попробуйте соответствие:

val sessionAsOption = session match { 
    case s:(SessionKey, Session) => Some(s) 
    case _ => None 
} 

sessionAsOption.foreach { 
    session => session._1 
} 

Это позже пример вы получите Some(), когда сеанс соответствует ожидаемому типу и None в противном случае.

Смежные вопросы