如果Scala函数中没有返回任何内容该怎么办

时间:2016-04-01 22:52:55

标签: scala apache-spark return-type

我有一个Scala函数,其显式返回类型为RDD

def myfunction(x:Int):RDD = {
  if (x==1) { 
    formRDD()
  } else {

  }
}

如果我不想形成一个空的RDD,我不知道如何处理其他问题。

3 个答案:

答案 0 :(得分:7)

如果您的函数可以返回#fitText { height:250px; /* height can be anything */ width:280px; /* width can be anything */ font-size:40px; /* start off big and it will scale down */ background:lightblue; border:solid 2px blue; font-family: Arial; } 或返回&#34;没有&#34;,则应返回var autoSizeText; autoSizeText = function() { var el, elements, _i, _len, _results; elements = $('#fitText'); if (elements.length < 0) { return; } _results = []; for (_i = 0, _len = elements.length; _i < _len; _i++) { el = elements[_i]; _results.push((function(el) { var resizeText, _results1; resizeText = function() { var elNewFontSize; elNewFontSize = (parseInt($(el).css('font-size').slice(0, -2)) - 1) + 'px'; return $(el).css('font-size', elNewFontSize); }; _results1 = []; while (el.scrollHeight > el.offsetHeight) { _results1.push(resizeText()); } return _results1; })(el)); } return _results; }; return autoSizeText(); 。在您的分支机构中,您可以返回RRDOption[RRD]

Read about Option

答案 1 :(得分:4)

实际上返回一个空的RDD是一个有效的解决方案。当封闭类型是集合时,我不想返回Option。 &#34;空&#34;在集合中完美定义,因此选项有点多余。

// assuming you have sc in scope
def myfunction(x:Int): RDD[Int] = 
   if (x == 1) formRDD() else sc.emptyRDD[Int] 

如果您必须返回常规集合,您也可以这样做:

def myfunction(x:Int): Seq[Int] = 
   if (x == 1) Seq(1,2,3) else Seq.empty[Int] 

def myfunction(x:Int): Option[Seq[Int]] = ...会有点浪费。

答案 2 :(得分:0)

imho你应该返回Option,以便明确指出此方法可能没有RDD返回。在调用此方法的方法中,您需要处理None案例,可能正在执行.getOrElse(RDD.empty)

虽然有些人可能认为这种做法可能是浪费,但这是一个关注点分离的问题。当然,如果您正在使用10行脚本,则无需担心返回Option而只需返回空RDD

  

注意:我注意到RDD已经熟悉了,所以我不知道如何生成一个空的