scala编程入门(理解)
来源:互联网 发布:美工职业描述 编辑:程序博客网 时间:2024/05/16 12:04
参考书籍
Scala编程
Martin Odersky, LexSpoon, Bill Venners
Scala 是高层级的
Scala 可以通过让你提升你设计和使用的接口的抽象级别来帮助你管理复杂性。例如,假设你有一个 String 变量name,你想弄清楚是否 String 包含一个大写字符。在 Java 里,你或许这么写:
// 在Java 里 boolean nameHasUpperCase = false;
for (int i = 0; i< name.length(); ++i) {
if (Character.isUpperCase(name.charAt(i)))
{
nameHasUpperCase= true;
break;
}
}
在 Scala 里,你可以写成:
val nameHasUpperCase= name.exists(_.isUpperCase)
变量
Scala 有两种变量,val 和 var。val 类似于 Java 里的 final 变量。一旦初始化了,val 就不能再赋值了。与之对应的,var 如同Java 里面的非 final 变量。var 可以在它生命周期中被多次赋值。
注意 Java 的++i 和 i++在 Scala 里不起作用,要在 Scala 里自增,必须写成要么 i = i + 1,或者 i += 1。
注意 Scala 和 Java 一样,必须把 while 或 if 的布尔表达式放在括号里。
操作符
Scala 里所有的操作符都是方法调用。
从技术上讲,Scala 没有操作符重载,因为它根本没有传统意义上的操作符。取而代之的是,诸如+,-,*和/这样的字符可以用来做方法名。因此,当第一步里你在 Scala 解释器里输入 1 + 2,你实际上正在 Int 对象 1 上调用一个名为+的方法,并把 2 当作参数传给它
带类型的参数化数组
scala与java
Scala里的包与Java里的包很相似:它们把全局命名空间 分区并提供了信息隐藏的机制。
类Int的值对应着Java的int值。更广泛意义上来说,所有的Java原始类型在scala包里都有对应的类。
例如,scala.Boolean对应着Java的boolean。 scala.Float对应着Java的float。当你把你的Scala代码编译成Java字节码,Scala编译器将使用Java的原始类型以便获得其带来的性能益处。
Scala 和Java 之间有一点不同,Java 需要你在跟着类命名的文件里放上一个公共类—— 如文件 SpeedRacer.java 里要放上类SpeedRacer——Scala 里,你可以任意命名.scala文件,而不用考虑里面放了什么 Scala类或代码。然而通常情况下如果不是脚本,推荐的风格是像在 Java 里那样按照所包含的类名来命名文件,这样程序员就可以通过查看文件名的方式更容易地找到类。
指令式风格编程和函数式风格编程
指令式:imperative 风格编程。指令式风格,是你常常使用像 Java,C++和 C 这些语言里用的风格,一次性发出一个指令式的命令,用循环去枚举,并经常改变共享在不同函数之间的状态。Scala允许 你指令式地编程,但随着你对 Scala 的深入了解,你可能常会发现你自己在用一种更函数式:functional 的风格编程。
指令式:imperative 风格编程
vari = 0
while(i < args.length) {
println(args(i))
i += 1
}
函数式:functional 的风格编程
args.foreach(arg=> println(arg))
这行代码中,你在 args 上调用 foreach 方法,并把它传入函数。此例中,你传入了带有一个叫做 arg 参数的函数文本:function literal。函数体是 println(arg)。
实例
从文件中读行记录,并把行中字符个数前置到每一行,打印输出的脚本。
- scala编程入门(理解)
- 深入理解scala scala并发编程
- Scala入门之函数编程
- Scala入门之函数编程
- scala 函数式编程入门
- Scala语言编程初入门
- scala编程系列(1)-scala编程入门初步
- Scala 异步编程几个概念的理解
- 深入理解Scala中的函数式编程
- 理解Scala中的函数式编程
- 深入理解Scala中的函数式编程
- Linux网络编程入门(注释理解)
- Scala基础入门(一)Scala 简介
- Scala入门No.2-面向接口编程
- Scala入门之面向接口编程
- [scala]函数式编程思想入门
- spark入门知识讲解和基础数据操作编程(统一用scala编程实例)
- js高级编程入门理解
- 三维图形技术点
- LEETCODE 36. Valid Sudoku
- Leetcode: insertion-sort-list
- scala2
- 设计模式2
- scala编程入门(理解)
- AndroidStudio-未 commit 惨剧下的本地数据恢复
- 学习springmvc的第六天(@PathVariable 注解、Ant字符匹配、指定请求方式)
- [DP 平衡树] Codeforces 809D Round #415 (Div. 1) D. Hitchhiking in the Baltic States
- jdbc-占位符
- iOS10隐私权限
- Android 按home键重新创建Activity的问题
- java 异常中的throws关键字
- 第十届省赛-H-Intelligent Parking Building