Как я мог правильно написать этот код функциональным способом без дублирования

Хотя стандарт C ++ не имеет такого требования, некоторым компиляторам требуется, чтобы все шаблоны функций и классов были доступны в каждой используемой системе переводов. Фактически для этих компиляторов тела шаблонных функций должны быть доступны в файле заголовка. Повторить: это означает, что эти компиляторы не позволят их определять в файлах без заголовка, таких как .cpp-файлы

Существует ключевое слово export , которое должно смягчать этот проблема, но он нигде не близок к тому, чтобы быть портативным.

0
задан Andrey Tyukin 13 July 2018 в 17:24
поделиться

2 ответа

def getRowsByPartitionKeyId(
  id:I, 
  pagingStateOption:Option[PagingState]
): (Option[List[M]], Option[PagingState]) = {

  val resultSet = session.execute(pagingStateOption match {
    case Some(pagingState: PagingState) => 
      whereClause.setFetchSize(1).setPagingState(pagingState)
    case None =>
      whereClause.setFetchSize(1)
  })

  val it = resultSet.iterator();//resultSet is an iterator
  val newPagingState:PagingState = resultSet.getExecutionInfo.getPagingState


  if (it.hasNext) {


    val resultSetAsList:List[Row] = asScalaIterator(it).toList
    val resultSetAsModelList = rowToModel(resultSetAsList.head)


    Tuple2(Some(List(resultSetAsModelList)),Some(pagingState))
  } else {
    Tuple2(None, None)
  }
}
2
ответ дан Andrey Tyukin 17 August 2018 в 12:21
поделиться

Получил это. Я забыл, что все в Scala возвращает значение даже match, поэтому я могу это сделать

val resultSet = pagingStateOption match {
  case Some(pagingState: PagingState) => {
    println("got paging state:" +pagingState)
    session.execute(whereClause
      .setFetchSize(1)
      .setPagingState(pagingState)) //get one row from ResultSet. Cassandra might return more or less though
  }
  case None => {
    session.execute(whereClause
      .setFetchSize(1)) //get one row from ResultSet. Cassandra might return more or less though
  }
}
0
ответ дан Manu Chadha 17 August 2018 в 12:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: