初学者求助一段scala代码,快被它的语法搞疯了。。。多谢!

飞火流云 2017-09-16 08:02:29
RT,不知道该怎么写了,这个语法比Java 难多了,想模拟一个简单的map查找算法,结果总是报错,
package test

trait PartitionStrategy extends Serializable {
/** Returns the partition number for a given edge. */
def getPartition(key: Int): Int
}

case object MetisPartition extends PartitionStrategy {
val metisMap =new scala.collection.mutable.HashMap[Int,Int]

def this(xc:Int) {
this(xc,0) //这里为什么编译报错?
println("Constructor! ")
mockLoadFile()
}

def mockLoadFile() {
try {
var id = 1 ;
while(id < 10000)
{
var partition = 5 ;
metisMap.put(id, partition)
id = id +1
}
println("size: " + metisMap.size)
} catch {
case ex: Exception => { // Handle missing file
ex.printStackTrace()
}
}
}

override def getPartition(src: Int): Int = {
var s = metisMap.get(src.hashCode())
if(!s.isEmpty)
return s.getOrElse(0)
else
throw new IllegalArgumentException("Metis can't find partition!")
}

def main(args :Array[String]){
try {
val partitionStrategy = new PartitionStrategy ////这里应该如何定义? 编译不过去
println(partitionStrategy.getPartition(110))
} catch {
case ex: Exception => {
ex.printStackTrace()
}
}
}
}

...全文
1385 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
m0_37889105 2017-11-10
  • 打赏
  • 举报
回复
[
class MetisPartition(x1:Int,x2:Int) extends PartitionStrategy {
  val metisMap =new scala.collection.mutable.HashMap[Int,Int]

  def this(x1:Int) {
    this(x1,0)   //这里为什么编译报错?
    println("Constructor! ")
    mockLoadFile()
  }

  def mockLoadFile() {
    try {
      var id = 1 ;
      while(id < 10000)
      {
        var partition = 5 ;
        metisMap.put(id, partition)
        id = id +1
      }
      println("size: " + metisMap.size)
    } catch  {
      case ex: Exception => { // Handle missing file 
        ex.printStackTrace()
      }
    }
  }

  override def getPartition(src: Int): Int = {
    var s = metisMap.get(src.hashCode())
    if(!s.isEmpty)
      return s.getOrElse(0)
    else
      throw new IllegalArgumentException("Metis can't find partition!")
  }

  def main(args :Array[String]){
    try {
      val partitionStrategy = new MetisPartition(1)  ////这里应该如何定义? 编译不过去
      println(partitionStrategy.getPartition(110))
    } catch {
      case ex: Exception => {
        ex.printStackTrace()
      }
    }
  }
}
yguihojjl 2017-09-16
  • 打赏
  • 举报
回复
很好的资源!!!
飞火流云 2017-09-16
  • 打赏
  • 举报
回复
简单的说,我的问题是,一个对象继承了 trait后,如果想在该对象初始化的时候进行一些操作,如何编写构造函数?
飞火流云 2017-09-16
  • 打赏
  • 举报
回复
或者,定义父类后怎么转化子类对象? 就是Java中的多态如何实现?
飞火流云 2017-09-16
  • 打赏
  • 举报
回复
RT, 希望实现子类对象的MAp查询, 快被scala的语法搞疯了,过于简洁了,各种不习惯!!!!!!!!!!!

1,258

社区成员

发帖
与我相关
我的任务
社区描述
Spark由Scala写成,是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于MapReduce算法实现的分布式计算。
社区管理员
  • Spark
  • shiter
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧