Scala学习笔记03【学习识别Scala函数式风格】

本文深入探讨Scala编程中从指令式到函数式风格的转换,阐述其优势,并通过实例展示如何实现这一转变,从而提高代码质量和可读性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Scala允许用指令式风格编程,但是鼓励采用一种更函数式的风格。

学习用函数式风格编程将不仅让你变成更好的Scala程序员,而且还能拓展你的视野并使你变成通常意义上好的程序员。

指令式和函数式编程差异:

    如果代码包含了任何var变量,那它大概就是指令式的风格。

    如果代码根本就没有var--就是说仅仅包含val--那它大概是函数式的风格。

    因此向函数式风格推进的一个方式,就是尝试不用任何var编程。

考虑下面这个改自于第2章的while循环例子,它使用了var并因此属于指令式风格:

def printArgs(args: Array[String]): Unit =
{    
    var i = 0   
    while (i < args.length)
    {       
        println(args(i))      
        i += 1     
    }  
} 

可以通过去掉var的办法把这个代码变得更函数式风格,像这样:

def printArgs(args: Array[String]): Unit = 
{      
    for (arg <- args)          
        println(arg)  
} 

或这样:

def printArgs(args: Array[String]): Unit =
{      
    args.foreach(println)  
}

这个例子演示了减少使用var的一个好处:
重构后(更函数式)的代码比原来(更指令式)的代码更简洁,也更少机会犯错。

Scala鼓励函数式风格的原因,实际上也就是因为函数式风格可以帮助你写出更易读懂,更不容易犯错的代码。


更函数式的方式应该是定义对需打印的arg进行格式化的方法,但是仅返回格式化之后的字串,如下所示:

def formatArgs(args: Array[String]) = args.mkString("\n") 

代码没有副作用或var的函数。

现在才是真正函数式风格:满眼看不到副作用或者var。

Scala不是强迫你用函数式风格编任何东西的纯函数式语言,它是一种指令式/函数式混合的语言。

在某些情况下指令式风格更符合你手中的问题,在这时候你不应该对使用它犹豫不决。


Scala程序员的编程思维

崇尚val,不可变对象和没有副作用的方法,首先想到这些。

只有在特定需要和判断之后才选择var,可变对象和有副作用的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值