Scala详解--------基础知识详解
来源:互联网 发布:linux中删除文件命令 编辑:程序博客网 时间:2024/04/29 23:39
Chapter1
1、Scala解释器
启动Scala解释器的方法如下:
自己总结的:
1.打开执行命令栏WIN+R ,输入cmd,在命令行上输入Scala等待启动如下
如上面所示即可启动Scala
2.使用bin内部的启动脚本
找到你所安装Scala的目录,并在Scala的bin文件夹中找到scala.bat文件,打开即可。
以上是我知道的打开方式,另外,可以使用eclipseEE进行安装插件,进行使用,具体的使用情况可以参考上一篇文章。
下面来测试一下Scala编译器的效果吧
测试成功,说明可以进行接下来的Scala的学习了。
下面来学习声明值和变量。
在以上的测试中,我们可以发现计算中出现res0、res1等变量的出现,在Scala中不仅可以使用这些名称,还可以自己声明。如:
val answer = 8*5+8
结果为:answer:int = 48
其中使用 val 定义的值实际上是一个常量----------无法改变其值
如果声明可变的的变量用 var :
var counter = 0
counter = 1
在Scala中鼓励使用val,对于java和C++的同志似乎很惊讶,我也是如此。
声明值或变量必须进行初始化。负责会报错。
注意的是:在Scala中的声明值和变量时的格式:
如:val greeting : Any: ="Hello“
val Scala :String="world"
另外在变量声明和赋值语句之后,我们都没有使用分号。在Scala中只有一行中有多条语句才需要分号。
常用类型:
Scala有7中常用类型:Byte、Char、Short、Int、Long、Float、Double以及Boolean类型
跟Java不同的是Scala这些类型都是类。Scala不刻意去区分类型和应用类型。可以对数字执行方法如:
1.toString()//结果仍为1 类型为:String
1.to(10)产出Range(1,2,3,4,5,6,7,8,9,10)
定义变量
Scala有两种变量,val和var。val类似于Java里的final变量。一旦初始化了,val就不能再赋值了。与之对应的,var如同Java里面的非final变量。var可以在它生命周期中被多次赋值。
val
msg
1
=
”hello scala”
var
msg
2
=
”hello world”
仔细看上面定义的2个变量好像都没有类型声明,这是怎么回事呢?这就要说到Scala的类型推断(type inference),因为你用了一个字符串来初始化msg变量,Scala推断msg的类型是String。你也可以显式地定义类型,有些时候也应该这么做。显式的类型标注不但可以确保Scala编译器推断你倾向的类型,还有助于以后代码的阅读。
val
msg
:
String
=
”hello scala” 与Java不同的是类型声明在变量后面,用一个”
:
”分隔。
4.定义函数
上面已经定义了变量,现在开始学习怎么定义一个函数
def
max(x
:
Int, y
:
Int)
:
Int
=
{
//定义函数
if
(x > y) x
else
y
}
max(
3
,
7
)
//调用函数
自己对照看与 java函数有什么不同,函数体只有一句的大括号可以省略写成 :
def
max(x
:
Int, y
:
Int)
=
if
(x > y) x
else
y
结果类型也去掉了,编译器类型推断可得出,尽管如此带上结果类型也是一个好习惯,便于其他人阅读代码。
Scala的Unit结果类型指的是函数没有返回有用的值。Scala的Unit类型比较接近Java的void类型,而且实际上Java里每一个返回void的方法都被映射为Scala里返回Unit的方法。因此结果类型为Unit的方法,仅仅是为了它们的副作用而运行
注:java里的i++和++i在scala里是行不通的。
Scala中的类型
Scala强大的类型系统让我们可以使用更具有表现力的表达式。一些主要的特点如下:
- 支持参数多态,泛型编程
- 支持(局部)类型推导,这就是你为什么不需要写
val i: Int = 12: Int
- 支持存在向量(existential quantification),给一些没有名称的类型定义一些操作
- 支持视图。 我们下个星期再讨论;给定的值从一个类型到其他类型的“可转换性”
99.44.toInt得到99
99.toChar()得到‘c’
toString是将任意的对象转换成字符串。
算数和操作符重载:
Scala的
算数和操作符重载运行效果和JavaC++中预期的效果是一样的。
- 使用中缀数学操作符+、-、*、/、%并产生对应的数值结果
- 使用比较操作符<、>、>=、=<并产生布尔值结果
- 使用逻辑操作符&&、||并产生布尔值结果
- 使用对等操作符==、!=并产生布尔值结果
- 使用位操作符&、|、^、~并产生数值结果
•如1+2实际上是调用了.+() 这个方法1.+(2)
•在具体的调用中,调用+实际上包含了+的各种类型参数的重载,而无需额外定义
前缀后缀操作符是一元操作符,而中缀操作符是二元操作符
操作符具有优先级(表达式的读取与执行并不依赖与顺序,更关键是操作符的优先级)
1+5*4=21
操作符优先级一般如下:
•特殊字符 > * / % > +- > : > =! > <> > & > ^ > | > 其他字母 > 赋值操作符
•scala支持如“***”“+-+”之类的操作符重载,考虑其优先级一般以第一个符号为主
•值得注意的是,形如“*=”的操作符重载,会被认为是赋值操作符而具有最低的优先级 即 m *= n+5 等价于 m *= (n+5)
- Scala详解--------基础知识详解
- Scala详解---------快速入门Scala
- Scala详解---------快速入门Scala
- Scala详解---------类
- Scala详解---------对象
- Scala详解----------继承
- Scala详解---------继承深入
- SCALA的例子详解
- Scala类详解
- Scala集合类型详解
- Scala--样例类(case)详解
- Scala Trait详解
- Scala运算符详解
- Scala 使用详解
- Linux 安装Scala 详解
- scala中的json详解
- 十. Scala函数详解
- scala continue,break 详解
- 【thinkphp3.2.x】thinkphp3.2.x中有关redis缓存相关的文件
- hosts 的设置将域名与iP在本地绑定
- 用Spring MVC实现用户登录的完整实例
- java事件处理机制(自定义事件)
- Linux -gdb如何显示宏定义的值
- Scala详解--------基础知识详解
- MongoDB sharding 算法
- applicationContext.xml 配置文件的存放位置
- nginx使用介绍 说明
- 《学习OpenCV》第四章课后题3-b
- 用eclipse创建WebService Step by Step
- AffineTransform入门
- Intel INDE(集成原生开发人员体验)的Windows开发指导
- poj 1573 Robot Motion 暑假训练第9题 模拟 大水题