我有一个Scala函数,其显式返回类型为RDD
:
def myfunction(x:Int):RDD = {
if (x==1) {
formRDD()
} else {
}
}
如果我不想形成一个空的RDD,我不知道如何处理其他问题。
答案 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;
}
或返回"没有",则应返回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();
。在您的分支机构中,您可以返回RRD
或Option[RRD]
。
答案 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
已经熟悉了,所以我不知道如何生成一个空的