scala入门

scala

 


前言

这是一个scala语言学习的系列文章

 

一、scala语言基本介绍

scala的预期目标是将面向对象,函数式编程和强大的系统类型结合起来,同时让人写出优雅,简洁的代码;

scala博采众长,scala采用了java和c#语法的大部分,而他们大部分借自于C,C++语法。表达式,语句,和代码块和java一样,还有类,包和引用的语法。除语法之外,Scala还采用了java的其他元素,如它的基本类型,类库和它的执行模式。函数式编程借鉴了SML,OCaml,和F#为代表的ML家族语言很接近,scala的隐式参数灵感来自Hsskell,基于actor的并发库来自Eelang的思想。

一:scala语言特点

面向对象:

Scala是一种面向对象的语言,Scala中的每个值都是一个对象,包括基本数据类型(即布尔值,数字等)在内,连函数也是对象。

类可以被子类化,而且Scala还提供了基于mixin的组合(mixin-based composition)。

类抽象机制的扩展有两种途径:一种途径是子类继承,另一种途径是灵活的混入机制。这两种途径能避免多重继承的种种问题。

函数式编程:

Scala也是一种函数式语言,其函数也能当成值来使用。Scala提供了轻量化的语法用以定义匿名函数,支持高阶函数,允许嵌套多层函数,并支持柯里化。Scala和case class及其内置的模式匹配用于函数式编程语言中常用的代码类型。更进一步,程序员可以利用scala的模式匹配,编写类似正则表达式的代码处理XML数据。

静态类型:

Scala具备类型系统,通过编译时检查,保证代码的安全性和一致性。

类型系统具体支持以下特性:

  • 泛型类
  • 协变和逆变
  • 标注
  • 类型参数的上下限约束
  • 把类别和抽象类型作为对象成员
  • 复合类型
  • 引用自己时显示指定类型
  • 视图
  • 多态方法

扩展性:

Scala的设计秉承意向事实,即在世间中,某个领域特定的应用程序开发往往需要特定于该领域的语言扩展。

Scala提供了许多独特的语言机制,可以以库的形式轻易无缝添加新的语言结构:

  • 任何方法可用作前缀或后缀操作符
  • 可以根据预期类型自动构造闭包

并发性:

Scala使用Actor作为其并发模型,Actor是类似线程的实体,通过邮箱收发消息。

Actor可以复用线程,因此可以在程序中可以使用数百万个Actor,而线程只能创建数千个。在2.10之后的版本中,使用Akka作为其默认Actor实现。

函数式编程:

函数式编程是一种"编程范式",也就是如何编写程序的方法论。

纯粹的函数式编程语言编写的函数没有变量,因此,任何一个函数,只要输入是确定的,输出就是确定的,这种纯粹函数我们称之为没有副作用。而允许使用变量的程序设计语言,由于函数内部变量状态不确定,同样的输入,可能得到不同的输出,因此,这种函数是有副作用的。

##函数式编程的特点:

  • 函数式一等公民
  • 以表达式为中心
  • 无副作用

只用纯函数来构造程序,或者说函数没有副作用。什么是副作用?一个带有副作用的函数不仅有一个返回值,还可能做了修改一个变量 直接修改数据结构 设置一个对象的成员 打印到终端或者读取用户输入 读取或者写入一个文件 在屏幕上绘画 抛出一个异常或以一个错误终止 一个函数在程序执行过程中除了根据输入参数给出运算结果外,没有其他影响,就称之为没有副作用的。

不修改状态

引用透明

函数式编程优势:

  • 代码简洁,开发速度快
  • 接近自然语言,易于理解
  • 易于代码管理
  • 适合并发编程
  • 适用于热升级

函数式编程的一个特点就是,函数也是值,同时允许把函数本身作为参数传入另一个函数,还允许函数返回一个函数!

tips:

静态语言和动态语言

静态编译语言:实现声明变量类型,类型不能改变,编译时检查;

动态编译语言:不用实现声明类型,随时可以赋值为其他类型,编程时不知道什么类型,很难判断;

静态语言和动态语言关键区别是何时获得类型信息,是在编译时间还是在运行时间;

 

强类型和弱类型

强类型语言:不同类型之间操作,必须强制类型转换为同一类型

弱类型语言:不同类型间可以操作,自动隐式转换。

强类型和弱类型语言的区别关键是类型之间的区别是否严格,例如语言是否会做字符串类型到数字类型的隐式转换。

 

java和Scala都是静态强类型语言,Python是动态强类型语言;

 

二、使用步骤

1.使用scala之前需要需要现在本地下载scala,下载地址: 

https://www.scala-lang.org/download/

注意: scala要求的jdk版本是1.8的;

 

2.idea中引入scala插件

直接在插件市场搜索scala插件,然后安装即可;


总结

scala入门知识介绍;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值