码迷,mamicode.com
首页 > 其他好文 > 详细

scala - fold,aggregate,iterator

时间:2017-03-30 19:35:33      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:split   javac   ext   实现   ati   tle   ack   参数   string   

  import org.json4s._
  import org.json4s.jackson._
  import org.json4s.jackson.JsonMethods._
  import org.json4s.JsonDSL._
  import org.json4s.JsonDSL.map2jvalue
  // or
  //import org.json4s.JsonDSL.WithDouble._
  //import org.json4s.JsonDSL.WithBigDecimal._
  //import scala.io.Source
  //import scala.collection.JavaConverters._
  //import scala.collection.mutable.Buffer
  import java.io.{File,PrintWriter}
  import java.util.Date
  implicit val formats = Serialization.formats(ShortTypeHints(List()))

使用json4s进行json操作,踩了scala一个坑。

    val data = readConf(file)
    val t = data.head
    val r = "Response"
    val n = "Title"
    val p = "Plot"
    val contents = data.filter( row => (row \ r).extract[String].toBoolean).filter(row => (row \ p).extract[String] != "N/A")
    val plots = contents.map{
      row =>
        val title = (row \ n).values.toString
        val plots = (row \ p)
        title -> plots
    }

 

三种方式实现类元素的拼接:要注意操作符函数的参数顺序。

    // val plotsIter = plots.iterator
    // var rstObj = plotsIter.next ~ plotsIter.next
    // while(plotsIter.hasNext) rstObj = plotsIter.next ~ rstObj
    val (head,tail) = plots.splitAt(2)
    val rstObj = tail.foldRight(head.head ~ head.last)(_ ~ _)
    val rstObj = tail.aggregate(head.head ~ head.last)(_ ~ _, _ ~ _)

fold对操作符参数传参顺序和定义顺序一致。

fold(x)((a,b)=>foo(a,b))

先占坑,等忙过这阵子,具体给出试错经过和结论分析。

scala - fold,aggregate,iterator

标签:split   javac   ext   实现   ati   tle   ack   参数   string   

原文地址:http://www.cnblogs.com/suanec/p/6647226.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!