Scala语言初入门

Scala是一门融合面向对象和函数式编程的多范式语言,运行在JVM上。本文介绍了Scala的基本概念,如纯函数、尾递归和引用透明性,强调函数式编程的优点。此外,还详细阐述了如何搭建Scala开发环境,包括安装JDK、配置Scala环境以及在Eclipse中进行Scala开发。同时,讲解了Scala中的变量、表达式、求值策略和高阶函数,最后讨论了递归和尾递归的概念。
摘要由CSDN通过智能技术生成

scala介绍

  • Scala语言来自于Scalable(可伸缩的)既可以写一些小的脚本,又可以写一写复杂的服务器端的程序。
  • Scala是一门纯正的面向对象语言,具有OO特征。
  • Scala是一门函数式语言,可以用函数式思想来编写代码
  • Scala是构建于JVM之上的,与java可以无缝互操作。

函数式编程思想

函数式编程基本名词介绍

纯函数来编写程序。

  • 纯函数(Pure Function),或函数的纯粹性(Purity)没有副作用(side Effect)
  • 副作用是状态的变化
    • 例子
    • 修改全局变量
    • 抛出异常
    • IO读写
    • 调用有副作用的函数
var x = 1
def XplusY_V1(y:Int) = x + y
def XplusY_V2(y:Int) = {x += y;x}

上面第一个函数是输入一个int类型的y,第二个函数是输入一个int类型的y返回值是x。
第二个函数相对于第一个函数对变量x产生了副作用。改变了x的值。
* 引用透明(Referential Transparency)对于相同的输入,总能得到相同的输出。
如果f(x)的参数x和函数体都是引用透明的,那么函数f是纯函数。
违反引用透明

  • 不变性(Immutability)为了获得引用透明性,任何值都不能发生变化。
  • 函数是一等公民(First-class Function)一切都是计算,函数式编程中只有表达式,变量、函数都是表达式。
    函数也可以作为参数或者返回值。

  • 表达式求值策略:严格求值和非严格求职。
    Call By Value属于严格求值
    Call By Name属于非严格求职

  • 惰性求值(Lazy Evaluation)当定义这个变量时不会立即求值,只有在使用到这个变量时才会求值。
  • 递归函数(Recursive Function)
    在函数式编程中没有循环语句,所有的循环都要用递归来实现。
    递归有个性能问题。容易堆栈溢出。

* 尾递归(Tail Recursion)

函数式编程的优点

  • 生产效率高
    同样的功能,Lisp(世界上第一个函数式编程语言)代码长度可能是C代码长度的七到十分之一。
  • 易于推理
  • 并行编程
    因为是纯函数,所以不会引起线程紊乱。
  • 多核计算、云计算

搭建scala环境

安装JDK

下载JDK最新版本,将环境变量添加到配置文件中

安装Scala的运行环境和包

http://www.scala-lang.org/download上下载了Scala的最新版本,将环境变量添加到配置文件中就可以用了。

REPL(Read Evaluate Print Loop)就是scala命令行的运行环境。

在linux命令行输入scala就可以直接进入到scala REPL中。

devil@devilshome:~$ scala
Welcome to Scala 2.12.0-M4 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_60).
Type in expressions for evaluation. Or try :help.

scala> println("Hello World")
Hello World

scala> 

println()函数在所有Scala代码中都可用。

scala> val x =1
x: Int = 1

scala> var x = 1
x: Int = 1

scala> 

var 和 val 的区别稍后解释。

使用eclipse开发scala

http://scala-ide.org/download/sdk.html下载专为scala的eclipse
- new一个Scala Project
- new 一个Scala Worksheet
worksheet是可以在IDE中直接进行代码的运行和结果的获得,是交互式的。
默认直接生成一个Object在eclipse中开发Scala

object worksheet {
   
  println("Welcome to the Scala worksheet")       //> Welcome to the Scala worksheet

  val x = 1                                       //> x  : Int = 1

  println(x)  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值