我是一名scala初學者,正在查看java api的trim()方法,我注意到了副作用,所以我試圖在scala中實現一個功能版本。Java調整方法的scala實現
這裏是java版本:返回
public String trim() {
int len = count;
int st = 0;
int off = offset; /* avoid getfield opcode */
char[] val = value; /* avoid getfield opcode */
while ((st < len) && (val[off + st] <= ' ')) {
st++;
}
while ((st < len) && (val[off + len - 1] <= ' ')) {
len--;
}
return ((st > 0) || (len < count)) ? substring(st, len) : this;
}
我在一個字符串&階版本迭代,當它遇到字符的字符串尾部的空間。整個字符串然後反轉,所以可以訪問尾隨的空白。這個新的字符串被迭代,直到遇到一個空格字符並返回該字符串的尾部。然後再次顛倒此新字符串以保持原始字符串順序:
def trim(stringToTrim : String) : String = {
def removePreString[String](list : List[String]) : java.lang.String = list match {
case head :: tail => {
if(head.toString.equals(" ")){
removePreString(tail)
}
else {
head.toString + tail.mkString
}
}
}//end removePreString
val preString = removePreString(stringToTrim.toList)
val reveresedString = preString.toList.reverse
val reveresedPostString = removePreString(reveresedString)
reveresedPostString.reverse
}//end trim
此代碼如何改進?扭轉絃樂兩次似乎浪費了?
代碼評論有codereview.stackexchange.com。 –
@Dave牛頓爲什麼代碼審查標籤呢? –
因爲人們使用它而不是在正確的網站上發佈? –