一. 安装环境
wget https://downloads.lightbend.com/scala/2.12.6/scala-2.12.6.tgz
vi ~/.bash_profile
export PATH=$SCALA_HOME/bin:$PATH
二. 运行
Scala是解释性JVM语言,编译后会生成*.class。也可在交互式CLI上编码。
ling-Pro:~ sun$ scala Welcome to Scala 2.12.4 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_102). scala> var list = List(1,2,3) list: List[Int] = List(1, 2, 3) scala> println("hello world") hello world
三. 示例
新的语言总会有一些奇怪的语法或表达式。
//import java.util._ // All //import java.awt.{Color, Font} // Part /** * trait相当于Interface,但可有方法体,支持多重继承 */ trait MyTrait { def show() def foo(){ println("Hello foo") } } /// Impl class MyTraitImpl extends MyTrait{ def show(){ println("Hello show") } } /// Objec object Test { def init(): String = { println("Init var") return "kettas" } /** * 默认访问修饰符为 public * 测试返回多个元素(元组) * ReturnType = {} 比较奇怪 */ def getMulit(a: Int) : Tuple2[Int, String] = { return (a, "Hello") } // 测试类型 def testType(){ var mystr:String = "hello" var myVar = 10 // 类型推断 val myVar1 = "world" // lambda val f = (x: Int) => x+3 Console.println(f(5)) } // 测试for循环 def testLoop(){ var list = List(1,2,3,4,5,6) // foreach <-操作符 for (a <- list) { Console.print(a + "\t") } // range for (a <- 1 to 10) { Console.print(a + "\t") } Console.println() } /** * 测试容器 * Uint = 相当于 void, 可省略 */ def testContainer(): Unit = { val map: Map[Int, String] = Map(1 -> "hello", 2 -> "world") val v1: Option[String] = map.get(1) // 可选值结构 val v2: Option[String] = map.get(3) // Option vs Some println(v1) println("v1: " + v1.get) // Some(hello) Some是一个类,通过some.get获取值 println("v2: " + v2) // None // 获取元组 val tuple = getMulit(5) println(tuple._1) println(tuple._2) // ++操作符,用于连接两集合 val l1 = List(1, 2) var l2 = List(3, 4) var l5 = l1 ++ l2 // (1,2,3,4) // 可变容器,链表实现 val buf = collection.mutable.ListBuffer.empty[Int] buf += 1 buf += 10 println(buf.toList) // 1,10 } /** * lazy关键字使用 * 借鉴懒汉式单例模式实现思想,使用变量时才初始化 * */ def testLazy(){ lazy val a = init(); println("After init") println(a) // After init; Init var; kettas } // main def main(args: Array[String]){ // 基本类型测试 testType() // 循环测试 testLoop() // 容器测试 testContainer() // 懒加载 testLazy() // 测试类 val p = new MyTraitImpl() p.show() } }
四. 其它语法
4.1 App
App 类连main方法都封装了,不过采用延迟加载方式。
object HelloScala extends App { println("Hello scala!") }
运行输出:Hello scala!
4.2 case语法
1. case match
与java switch语法类似,新增=>操作分隔模式和表达式。
def matchTest(x: Int): String = x match { case 1 => "one" case 2 => "two" case _ => "many" } println( matchTest(1) ) // one
2. case class
// case类默认不可变,可通过模式匹配分解 case class Person(name: String, age: Int) val alice = new Person("Alice", 25) val bob = new Person("Bob", 32) val charlie = new Person("Charlie", 32) // 遍历用户列表 for (person <- List(alice, bob, charlie)) { person match { case Person("Alice", 25) => println("Hi Alice!") case Person("Bob", 32) => println("Hi Bob!") case Person(name, age) => println("Age: " + age + " year, name: " + name + "?") } }
输出:
Hi Alice!
Hi Bob!
Age: 32 year, name: Charlie?
五. Akka框架
Akka 是一组构建高并发,分布式,弹性消息驱动应用工具库,便于构建JVM的并发应用和分布式应用,支持java/scala。
基础示例:
import akka.actor._ import akka.util._ /** Simple hello from an actor in Scala. */ object Hello1 extends App { // 配置 val system = ActorSystem("actor-demo-scala") val hello = system.actorOf(Props[Hello]) hello ! "Bob" // ! 运算符是 Akka 中表示将一条消息发送到 actor 的便捷方式 Thread sleep 1000 system shutdown // 接收器 class Hello extends Actor { def receive = { case name: String => println(s"Hello $name") // s 字符串插值器 } } }
参考:
相关推荐
scala 教程 。pdf
Scala中集合的使用 大学生 1. List 列表的使用 2. Set 集合的使用 3.Map 映射的使用 4. 元组的使用
标签:apollo-scala-1.2-scaladoc.jar,apollo,scala,1.2,scaladoc,jar包下载,依赖包
jackson-module-scala, 关于Jackson的模块( http,添加 重要请至少使用 2.6.5个版本或者 2.7.2 ;早期发布版本已知包含重要的Bug 。概述Jackson是一个支持三个模型的快速JSON处理器: 流,node 和对象映射( XML SAX ...
进入IDEA,安装Scala插件,或者自己导入插件 方法1: 方法2: 4.点击 ok->apply -> 重启 idea 即可 开发 步骤 1:file->new project -> 选择 maven 步骤 2. 步骤 3. 步骤 4:默认下,maven 不支持 scala 的开发...
使用libgdx,Scala和sbt的游戏模板 建造 sbt stage 运行游戏 ./run
2018年最新版的scala使用指南,找了很久的,分享大家,并且赚点积分。
主要介绍了Scala 操作Redis使用连接池工具类RedisUtil,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
最新制作 scala 2.13.3 API 文档 Html离线版 Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性。 Scala 运行在 Java 虚拟机上,并兼容现有的 Java 程序。
scala-2.12.3 scala-2.12.3 scala-2.12.3 scala-2.12.3
此文档是讲解实战Scala,...本书面向实际的使用场景,提供了大量的Scala实例,同时,也给出底层的原理和相关的参考。对于Scala新手来说这是一本不错的入门书,对于老手来说也是一本夯实基础,检视自己所学知识的好书。
很大篇幅都放在,使用scala实现scala默认库文件的API中,通过对简单的函数式编程逻辑的介绍和实践,主要是实践,建立起来一个比较明晰的scala思维模式,或者叫函数式编程的思维模式。 2 无副作用的函数式编程,同时...
scala 编译工具 sbt 安装包。 Little or no configuration required for simple projects Scala-based build definition that can use the full flexibility of Scala code Accurate incremental recompilation ...
scala eclipse插件 拷贝到相应的目录即可使用,百度一大堆
这是一个简单实用的scala集成mybatis数据库查询代码,简单明了
Scala语法简明教程.pdf
最近看了hbase的源码根据源码写了一些scala调动hbase表的API,话不多说直接上代码!Hadoop的版本是2.7.3,scala版本是2.1.1,hbase的版本是1.1.2 如果版本不同可以修改pom的依赖项,但要注意版本冲突。 并且在scala...
scala2.12.1Windows镜像包
scala3 scala3 scala3 scala3 scala3