Beginning Scala study note(1) Geting Started with Scala
1. Scala is a contraction of "scalable" and "language". It's a fusion of objected-oritended and functional programming.
2. Compare Book class between Java and Scala
Java:
class Book{
private String title;
private int numberOfPages;
public Book(String title, int numberOfPages){
this.title = title;
this.numberOfPages = numberOfPages;
}
}
Scala:
class Book(title: String, numberOfPages : Int)
3. Scala does not include static members, primitive types, break and continue statements, enums, wildcards(通配符). Scala includes features such as type inference(类型推断) and extensible APIs.
4. Case classes don’t have code such as getter/setter, equals,hashCode,toString etc.
case class Book(var title: String, var numberOfPages: Int)
Example:
(1) Compile Book.scala: scalac Book.scala, this creates Book.class and Book$.class file.
(2) disassemble Book.class: javap Book, then illustrates the Java equivalent as follows:
public class Book implements scala.ScalaObject,scala.Product,scala.Serializable {
public static final scala.Function1<scala.Tuple2<java.lang.String, java.lang.Object>, Book> tupled();
public static final scala.Function1<java.lang.String, scala.Function1<java.lang.Object, Book>> curry();
public static final scala.Function1<java.lang.String, scala.Function1<java.lang.Object, Book>> curried();
public scala.collection.Iterator<java.lang.Object> productIterator();
public scala.collection.Iterator<java.lang.Object> productElements();
public java.lang.String title();
public void title_$eq(java.lang.String);
public int numberOfPages();
public Book copy(java.lang.String, int);
public int copy$default$2();
public java.lang.String copy$default$1();
public int hashCode();
public java.lang.String toString();
public boolean equals(java.lang.Object);
public java.lang.String productPrefix();
public int productArity();
public java.lang.Object productElement(int);
public boolean canEqual(java.lang.Object);
public Book(java.lang.String, int);
}
5. Everything in Scala is an object, including numbers. Thus,
+ * / x = ().+((().*())./(x))
6. Scala traits are similar with Java interfaces, the difference is that traits can include method implementations. Scala also does not support static members, instead a Scala class can provide a singleton object. A singleton object uses object keyword.
object HelloWorld{
def greet(){
println("Hello World!")
}
}
HelloWorld is a singleton object. Call the method like HelloWorld.greet()
7. In Scala, you can pass functions to methods and functions, and return them from methods and functions, as well as assign them to variables. Functions also are objects.
(i: Int) => {i * i}
It defines a function that takes an Int parameter and returns a value that is square of the provided Int.
Assign the function to a variable: val square = (i: Int) => { i * i }, square is an instance of a function
Example:
scala> val square = (i: Int) => {i*i}
square: Int => Int = <function1>
scala> square()
res3: Int =
8. Scala can call any Java code, subclass any Java class, and implement any Java interface. Scala code reuses Java libraries and Java types. Scala was designed for seamless interoperability(互通性) with Java and ultimately Scala programs compile to JVM bytecode.
9. Intsall Scala:
Add these lines to your $HOME/./bash_profile:
export SCALA_HOME=/Users/Al/scala
PATH=$PATH:/Users/A1/scala/bin
10. scala offers different ways to run programs:
(1) Interactive at a REPL command line.
scala> println("Hello World!")
Hello World!
scala> +
res1: Int =
scala> res1* # Any variables you created are available for the lifetime of your session
res3: Int =
scala> val x="Hello World" # Scala interpreter infers the value type for you
x: String = Hello World
scala> var x1=x.length
x1: Int =
scala> import java.util._ # java.util library in session we can use
import java.util._
scala> val d = new Date
d: java.util.Date = Fri Jun :: CST
scala> val str="1_2_3"
str: String = 1_2_3
scala> str.split("_")
res4: Array[String] = Array(, , )
scala> :help # help命令
scala> :paste # Multiline paste mode supports entering multiple lines of code to be compiled together, and external source code and libraries
// Entering paste mode (ctrl-D to finish)
val v =
if(v==) println("true") else println("false")
// Exiting paste mode, now interpreting.
true
v: Int =
scala> :quit
(2) scala scripts
Type scala code into a text file and save it with an extension .scala.
println("Hello World!")
scala Hello.scala
Hello World
(3) Compiling Scala Programs
> scalac File1.scala File2.scala # compile Scala source files into class files
> fsc File1.scala File2.scala # use fast scala compiler, which is very useful smaller projects.
SBT is an open source build tool for Scala and Java projects, which provides native support for compiling Scala code and integrating with many Scala test frameworks and dependency management, continuous compilation, testing, and deployment.
11. Scala programs
(1) HelloWorld. Remark: A semicolon at the end of a statement is usually optional.
object HelloWorld{
def main(args: Array[String]){
println("Hello World!")
}
}
main method is defined in an object, not in class. Actually return type is Unit, which is similar to void.
Specify the return type:
def main(args :Array[String]) : Unit = { } # def: tell comppiler that this is a method
(2) Print1.scala
scala> for{i <- to } print(i+" ")
scala> for{i<- to
| j <- to } print(i*j+" ")
Beginning Scala study note(1) Geting Started with Scala的更多相关文章
- Beginning Scala study note(3) Object Orientation in Scala
1. The three principles of OOP are encapsulation(封装性), inheritance(继承性) and polymorphism(多态性). examp ...
- Beginning Scala study note(4) Functional Programming in Scala
1. Functional programming treats computation as the evaluation of mathematical and avoids state and ...
- Beginning Scala study note(9) Scala and Java Interoperability
1. Translating Java Classes to Scala Classes Example 1: # a class declaration in Java public class B ...
- Beginning Scala study note(2) Basics of Scala
1. Variables (1) Three ways to define variables: 1) val refers to define an immutable variable; scal ...
- Beginning Scala study note(8) Scala Type System
1. Unified Type System Scala has a unified type system, enclosed by the type Any at the top of the h ...
- Beginning Scala study note(6) Scala Collections
Scala's object-oriented collections support mutable and immutable type hierarchies. Also support fun ...
- Beginning Scala study note(5) Pattern Matching
The basic functional cornerstones of Scala: immutable data types, passing of functions as parameters ...
- Beginning Scala study note(7) Trait
A trait provides code reusability in Scala by encapsulating method and state and then offing possibi ...
- Scala 深入浅出实战经典 第49课 Scala中Variance代码实战(协变)
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...
随机推荐
- VS2015 调试Web项目 遭遇 HTTP 错误 500.23 - Internal Server Error
此错误是因为项目使用的托管管道模式有问题,将集成改为传统即可 选中项目 进入项目属性 ,如图界面
- Jquery制作--焦点图左右轮播
公司项目经常用到轮播焦点图,于是自己写了一个纯jq形式的横向轮播焦点图,可点击小圆点或者左右按钮进行切换,属于定宽类型.改成自适应宽度的也不难,将css里面的bannerCon宽度改为百分比,再在js ...
- ng-repeat里创建的自定义指令
在ng里,所有的指令在按照意愿正常工作之前的都需要编译一下,包含angularJS的自定义指令. ng模板里的所有指令都会在angularJS加载完毕之后编译一下,所以那些自定义指令和事件才能工作. ...
- python界面
import easygui as g import sys while 1: g.msgbox("我一定要学会编程!","加油!") #choices = [ ...
- http://blog.csdn.net/java2000_wl/article/details/8627874
http://blog.csdn.net/java2000_wl/article/details/8627874
- CSS3中的px,em,rem,vh,vw辨析
1.px:像素,精确显示 2.em:继承父类字体的大小,相当于"倍",如:浏览器默认字体大小为16px=1em,始终按照div继承来的字体大小显示,进场用于移动端 em换算工具:h ...
- asp.net 文件下载(txt,rar,pdf,word,excel,ppt)
aspx 文件下载说起来一点都不难,但是在做的过程中还是遇到了一些小小的问题,就是因为这些小小的问题,导致解决起来实在是太难了,其中一个就是Response.End();导致下载文件出现线程终止的情况 ...
- 数独 JAVA实现
数独游戏的规则从很久之前就知道,但是一直都没怎么玩过,然后到了大学,大一下学期自己学dfs的时候,刚刚好碰到了一个数独的题目,做出来后,感觉还是挺有成就感的 然后大二学了JAVA,看了下那个一些有关于 ...
- PDF虚拟打印机
1.安装福昕PDF阅读器,自己就会安装上PDF虚拟打印机 2.通过office2010之后版本中自带的另存为功能转换为pdf 3.pdf虚拟打印机工具:工具1:http://www.win2pdf.c ...
- getAttribute、setAttribute、removeAttribute
1.函数语法 elementNode.attributes:属性返回包含被选节点属性的 NamedNodeMap. elementNode.getAttribute(name):方法通过名称获取属性的 ...