1.前言

近期在參加Hadoop和Spark培训。须要使用Scala,自学了一下作为入门。这里作一个记录。

2.下载

1) 在scala官网下载。地址: http://www.scala-lang.org/

2) 下载IDE。地址: http://scala-ide.org/

3)配置环境变量

SCALA_HOME:C:\Program Files (x86)\scala

Path:C:\Program Files (x86)\scala\bin

在命令行中能够測试scala是否正常安装。

3.Hello Word

IDE 事实上就是一个Eclipse的开发环境,大家都非常熟悉了。新建project->新建类就可以!

能够发现,jre都是本地的,这也说明了scala是能够直接执行在JVM上的。

scala也能够直接在交互式shell环境下执行(如命令行图所看到的),这也是scala非常大的一个优势。

4.基本样例

1)变量的使用

object Hello {
def main(args: Array[String]) {
var a = 1;
var b = 2;
var c = a + b;
println("c = " + c);
}

var 说明编译器能够做类型判断,字符和数字使用"+"连接成字符串。

2)循环

var i = 0;
// for loop execution with a range
for( i <- 1 to 3){
println( "Value of i: " + i );

唯一的差别在于符号 <-

3) 集合

var index = 0;
val numList = List(1,2,3,4,5,6); // for loop execution with a collection
for( index <- numList ){
println( "Value of index: " + index );
}

4)函数

def printMe() : Unit = {
println("Hello, Scala!")
} def addInt( a:Int, b:Int ) : Int = {
var sum:Int = 0
sum = a + b
return sum
}

由參数和无參数的形式,感受一下!

5)调用同一个包以下的类

class Yiibai(xc: Int, yc: Int) {
var x: Int = xc
var y: Int = yc def move(dx: Int, dy: Int) {
x = x + dx
y = y + dy
println ("Yiibai x location : " + x);
println ("Yiibai y location : " + y);
}
}

在main函数里面调用:

val pt = new Yiibai(10, 20);
pt.move(10, 10);

6) Tuples

val pair = (99, "Luftballons")
println(pair._1)
println(pair._2)

注意訪问形式

7)类的继承

trait Friendly {
def greet() = "Hi"
} class Dog extends Friendly {
override def greet() = "Woof"
} class HungryDog extends Dog {
override def greet() = "I'd like to eat my own dog food"
} trait ExclamatoryGreeter extends Friendly {
override def greet() = super.greet() + "!"
} var pet: Friendly = new Dog
println(pet.greet()) pet = new HungryDog
println(pet.greet()) pet = new Dog with ExclamatoryGreeter
println(pet.greet()) pet = new HungryDog with ExclamatoryGreeter
println(pet.greet())

输出:

Woof
I'd like to eat my own dog food
Woof!
I'd like to eat my own dog food!

8)Trait

相似Java interface, 但能够定义方法体!

trait Friendly {
def greet() = "Hi"
} class Dog extends Friendly {
override def greet() = "Woof"
}

9)异常

import java.io.FileReader
import java.io.FileNotFoundException
import java.io.IOException object Test {
def main(args: Array[String]) {
try {
val f = new FileReader("input.txt")
} catch {
case ex: FileNotFoundException =>{
println("Missing file exception")
}
case ex: IOException => {
println("IO Exception")
}
}
}
}

输出:

C:/>scalac Test.scala
C:/>scala Test
Missing file exception C:/>

10)文件

写文件

import java.io._

object Test {
def main(args: Array[String]) {
val writer = new PrintWriter(new File("test.txt" )) writer.write("Hello Scala")
writer.close()
}
}

读文件

import scala.io._
Source.fromFile(new java.io.File("cn.scala")).getLines().foreach(println)

5.总结

scala 在大数据,云计算方面有较为广泛的运用,学习一下还是挺实用的。欢迎大家一起分享讨论。

Scala 基础新手教程的更多相关文章

  1. Android基础新手教程——1.10 反编译APK获代替码&amp;资源

    Android基础新手教程--1.10 反编译APK获代替码&资源 标签(空格分隔): Android基础新手教程 本节引言: "反编译Apk".看上去好像好像非常高端的样 ...

  2. Android基础新手教程——1.6 .9(九妹)图片怎么玩

    Android基础新手教程--1.6 .9(九妹)图片怎么玩 标签(空格分隔): Android基础新手教程 1.本节引言: 可能有的一些疑问: 1.什么是.9图片? 答:图片后缀名前有.9的图片,如 ...

  3. Android基础新手教程——3.1 基于监听的事件处理机制

    Android基础新手教程--3.1.1 基于监听的事件处理机制 标签(空格分隔): Android基础新手教程 本节引言: 第二章我们学习的是Android的UI控件,我们能够利用这些控件构成一个精 ...

  4. Android基础新手教程——4.1.3 Activity登堂入室

    Android基础新手教程--4.1.3 Activity登堂入室 标签(空格分隔): Android基础新手教程 本节引言: 好的,在学习了两节的Activity后相信大家已经知道怎样去使用Acti ...

  5. Android基础新手教程——4.1.2 Activity初窥门径

    Android基础新手教程--4.1.2 Activity初窥门径 标签(空格分隔): Android基础新手教程 本节引言: 上一节中我们对Activity一些主要的概念进行了了解,什么是Activ ...

  6. Android基础新手教程——4.4.1 ContentProvider初探

    Android基础新手教程--4.4.1 ContentProvider初探 标签(空格分隔): Android基础新手教程 本节引言: 本节给大家带来的是Android四大组件中的最后一个--Con ...

  7. Android基础新手教程——3.7 AnsyncTask异步任务

    Android基础新手教程--3.7 AnsyncTask异步任务 标签(空格分隔): Android基础新手教程 本节引言: 本节给大家带来的是Android给我们提供的一个轻量级的用于处理异步任务 ...

  8. Android基础新手教程——4.3.1 BroadcastReceiver牛刀小试

    Android基础新手教程--4.3.1 BroadcastReceiver牛刀小试 标签(空格分隔): Android基础新手教程 本节引言 本节我们将来学习Android四大组件中的第三个:Bro ...

  9. Android基础新手教程——4.1.1 Activity初学乍练

    Android基础新手教程--4.1.1 Activity初学乍练 标签(空格分隔): Android基础新手教程 本节引言: 本节開始解说Android的四大组件之中的一个的Activity(活动) ...

随机推荐

  1. TensorFlow——热身运动:简单的线性回归

    过程: 先用numpy建立100个数据点,再用梯度下滑工具来拟合,得到完美的回归线. # _*_coding:utf-8_*_ import tensorflow as tf import numpy ...

  2. AtCoder Petrozavodsk Contest 001

    第一场apc,5H的持久战,我当然水几个题就睡了 A - Two Integers Time limit : 2sec / Memory limit : 256MB Score : 100 point ...

  3. 2015长春网络赛1001 求连通快数量的问题dfs

    Ponds Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Sub ...

  4. iOS----OC特性-特殊功能宏

    1.NS_ASSUME_NONNULL_BEGIN && NS_ASSUME_NONNULL_END 在Swift中存在Option类型,也就是使用?和!声明的变量.但是OC里面没有这 ...

  5. Linux 终端操作之「I/O Redirection」

    I/O 重定向是在终端运行程序时很常用的技巧,但是我对它所知甚少.今天我在 DigitalOcean 上发现了一篇很好的 tutorial.这篇随笔记录一下我的心得体会和发现的一个问题. I/O re ...

  6. LibreOJ2042 - 「CQOI2016」不同的最小割

    Portal Description 给出一个给出一个\(n(n\leq850)\)个点\(m(m\leq8500)\)条边的无向图.定义\(cut(s,t)\)等于\(s,t\)的最小割的容量,求在 ...

  7. python hashlib模块 logging模块 subprocess模块

    一 hashlib模块 import hashlib md5=hashlib.md5() #可以传参,加盐处理 print(md5) md5.update(b'alex') #update参数必须是b ...

  8. Java 学习(2):java 基础概念

    Java作为一种面向对象语言.支持以下基本概念: 多态 继承 封装 抽象 类 对象 实例 方法 重载 基础语法: 一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作.以 ...

  9. PAT 甲级1002 A+B for Polynomials (25)

    1002. A+B for Polynomials (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue T ...

  10. 标准C程序设计七---34

    Linux应用             编程深入            语言编程 标准C程序设计七---经典C11程序设计    以下内容为阅读:    <标准C程序设计>(第7版) 作者 ...