Scala:Next Steps in Scala

Array

 1 val greetStrings = new Array[String](3)
 2 greetStrings(0) = "Hello"
 3 greetStrings(1) = ","
 4 greetStrings(2) = "world!\n"
 5
 6 for(i <- 0 to 2)
 7   print(greetStrings(i))
 8
 9 val numNames = Array("zero", "one", "two")
10 for(x <- numNames)
11   println(x)

针对上面的代码可以说如下几点:

泛型支持

1 new SomeClass[Type Argument](...)

当方法只有一个参数时,可以采用中缀的形式调用。

1 0 to 2 // (0).to(2)

一切皆为对象,所有的运算符都对应对象上的方法。

obj(...) 对应 obj.apply(...)

obj(...) = ... 对应 obj.update(...)

 1 object TestClass {
 2   def apply(): TestClass = new TestClass()
 3 }
 4 class TestClass {
 5   def say(msg: String):Unit = {
 6     println(msg)
 7   }
 8
 9   def apply(x: Int): Unit = {
10     println(x)
11   }
12
13   def apply(x: Int, y: Int): Unit = {
14     println(x)
15     println(y)
16   }
17
18   def apply(args: Int*): Unit = {
19     for(x <- args)
20       println(x)
21   }
22
23   def update(x: Int, msg: String): Unit = {
24     println(x)
25     println(msg)
26   }
27
28   def update(x: Int, y: Int, msg: String): Unit = {
29     println(x)
30     println(y)
31     println(msg)
32   }
33 }
34
35 var test = new TestClass()
36 test say "hello, world!"
37 test(1)
38 test(2, 3)
39 test(2, 3, 4)
40
41 test(1) = "hello"
42 test(2, 3) = "world"
43
44 println(TestClass())

List

 1 var list = List(3, 4, 5)
 2 list = 1 :: 2 :: list
 3 list.foreach(println)
 4
 5 class TestClass {
 6   def |: (x: Int): TestClass = {
 7     println(x)
 8     this
 9   }
10 }
11
12 var test = new TestClass()
13 2 |: 1 |: test

List的用法还是比较自然的,从上面的代码可以学到一点额外的知识,即:以“:”号结尾的方法,在采用中缀调用法时,对象在右侧。

Tuple

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

Tuple在语法层面上显出了其特殊性,估计Scala在很多地方对其都有特殊处理,拭目以待了。

时间: 2024-10-08 11:13:22

Scala:Next Steps in Scala的相关文章

spark定制之六:sql版start.scala

上个版本的start.scala用的是HiveContext,这个是SQLContext的,不需编译. # cat testperson.txt #字段用table键分隔 zs 10 30.0 li 12 32.0 # spark-shell -i:start.scala scala> help 根据提示逐步运行 import org.apache.spark.sql.SchemaRDD var FIELD_SEPERATOR = "\t" var RECORD_SEPERATO

Scala:用于Java的轻量级函数式编程

Scala为Java开发提供了轻量级的代码选项,但是学习过程可能会很艰难.了解有关Scala的知识以及是否值得采用. 基于Java的语言通常涉及冗长的语法和特定于领域的语言,用于测试,解析和数值计算过程.这些事情可能是开发人员的祸根,因为成堆的重复代码需要开发人员花费更多的时间进行梳理才能发现错误. 作为一种通用的编程语言,Scala可以通过结合面向对象的样式和功能样式来帮助减轻这些问题.为了减轻语法复杂性,Scala还将命令性编程与功能性编程相融合,并且可以方便地使用其对庞大的Java库生态系

Scala学习(1)——Scala基础知识

本文要解决的问题: Spark主要是由Scala语言编写而成的,所以要真正深入了解Spark,必须要熟悉Scala,在此结合阅读<Scala编程>这本书的情况,对Scala语言做一个基本的总结. Scala的优势 (1)简洁 类型推断 函数创建的文法支持 (2)Java互操作性 可重用Java库 可重用Java工具 没有性能惩罚 Scala工作机制 编译成Java字节码 可在任何标准JVM上运行,甚至是一些不规范的JVM上 Scala编译器是Java编译器的作者写的 启动解释器 输入Scala

Scala详解---------快速入门Scala

我无可救药地成为了Scala的超级粉丝.在我使用Scala开发项目以及编写框架后,它就仿佛凝聚成为一个巨大的黑洞,吸引力使我不得不飞向它,以至于开始背离Java.固然Java 8为Java阵营增添了一丝亮色,却是望眼欲穿,千呼万唤始出来.而Scala程序员,却早就在享受lambda.高阶函数.trait.隐式转换等带来的福利了. Java像是一头史前巨兽,它在OO的方向上几乎走到了极致,硬将它拉入FP阵营,确乎有些强人所难了.而Scala则不,因为它的诞生就是OO与FP的混血儿--完美的基因融合

Scala简述、安装scala以及集成开发环境Scala Eclipse

一.Scala概述 可拓展 ?面向对象 ? 函数式编程 兼容JAVA ? 类库调用 ? 互操作  语法简洁 ? 代码行短 ? 类型推断 ? 抽象控制 静态类型化 ? 可检验 ? 安全重构 支持并发控制 ? 强计算能力 ? 自定义其他控制结构 二.安装scala IDE Eclipse(原生支持,使用比较复杂) IntelliJ(价格昂贵) NetBeans(程序可靠但插件笨重) CMD 通过CMD调用Scala解释器 方便.简单,易上手 运行环境:win7+jdk7+scala2.11.6 1.

[ERROR] error: error while loading &lt;root&gt;, error in opening zip file error: scala.reflect.internal.MissingRequirementError: object scala.runtime in compiler mirror not found.

在家编译一个Apache的开源项目,在编译时遇到错误如下: error: error while loading <root>, error in opening zip file [ERROR] error: error while loading <root>, error in opening zip file error: scala.reflect.internal.MissingRequirementError: object scala.runtime in comp

Scala 概述+scala安装教程+IDEA创建scala工程

Scala概述 1.1.什么是Scala Scala是一种多范式的编程语言,其设计的初衷是要集成面向对象编程和函数式编程的各种特性.Scala运行于Java平台(Java虚拟机),并兼容现有的Java程序. 1.2.为什么要学Scala 1.优雅:这是框架设计师第一个要考虑的问题,框架的用户是应用开发程序员,API是否优雅直接影响用户体验. 2.速度快:Scala语言表达能力强,一行代码抵得上Java多行,开发速度快:Scala是静态编译的,所以和JRuby,Groovy比起来速度会快很多. 能

Scala:映射和元组

映射是键值对偶的集合.Scala有一个通用的叫法——元组:n个对象的聚集,并不一定要相同的类型. 构造映射 键A -> 值B scala> val scores = Map("wcc100"->100)//不可变映射 scores: scala.collection.immutable.Map[String,Int] = Map(wcc100 -> 100) scala> val scores1 = scala.collection.mutable.Map

Scala:HelloWorld

代码 1 object HelloWorld { 2 def main(args: Array[String]): Unit = { 3 println("Hello world") 4 } 5 } 解说 object关键字相当于static(更确切的说法是单例模式的一种语言层面的支持),def关键字定义方法,方法参数和返回值都采用后缀形式,即:“:类型”,Unit代表void,数组的表示采用Array[T],main是特殊的入口方法. 在控制台执行“scala 对象名”,传入的参数必