应用场景
- scala 基础学习,以便后续Spark 源代码研究 。
- 通过scala语言,实现多种方式列表元素求和,进一步了解scala特性。
- 还记得的大三实习的时候,去参加上海源创会,已经零零星星学了scala知识。直到现在才能欣赏scala 的部分美!
代码实现
/**
* 元素求和
*
* Created by Khgines on 2018-4-3.
*/
object elem_sum {
/**
* sum1、sum2 递归方式 求和
*
* @param lst
* @return
*/
def sum1(lst : List[Int]):Int={
if (lst == Nil) 0 else lst.head + sum1(lst.tail)
}
def sum2(lst : List[Int]): Int = lst match {
case Nil => 0
case h :: t => h + sum2(t)
}
/**
* 迭代器遍历方式 求和
* @param lst
* @return
*/
def sum3(lst : List[Int]): Int = {
var result = 0
for (l <- lst) result += l
result
}
// 入口函数
def main(args: Array[String]) {
val nums = List(2,4,6,8)
println(sum1(nums))
println(sum2(nums))
println(sum3(nums))
println(nums.sum)
}
}
- 输出结果
Advice
- 进一步理解递归,学会用递归的方式思考。
- 使用IDEA 利器进行开发,更有必要掌握各种快捷键(社区版 : Free, open-source)。
- 掌握Scala API,很多方法已经实现。由于没有掌握Scala API 而去重复造轮子,既浪费时间,有没有意义!
References
- Scala API Root Package
- Download IntelliJ IDEA
- Strategic Scala Style: Principle of Least Power