scala 编译器
有eclipse ,idea ,sumblime等
scala shell
1、变换目录 cd
2、目录清单 ls
3、创建目录 mkdir
4、移除目录 rm
5、移除目录 rm -r
6、重复前一行命令的最后一个参数: liunx !$ 在 powershell $$
7、命令行: history
8、unzip
安装 scala
需要先安装java
再安装scala
跟java一样,检查scala -version
示例代码:
https://github.com/chrisdbarran/AtomicScala
运行scala
crtl+R 输入scala
scala> 42*11.3 res0: Double = 474.6
退出
scala> :quit
注释
注释有两种形式:
以//开头的注释
多行注释/**/
编写脚本
脚本是可以在命令行运行的由scala代码构成的文件,
脚本是可以在命令执行该脚本
F:\scala\AtomicScala-master\AtomicScala-master\test>scala TestScala.scala Hello world
值
值保存的是特定类型的信息。
val name=initalization
val关键字后面跟着你起的名字,等号和初始值。名字以字母或下划线开头。后面跟着更多的字母,数字或下划线,美元符号在scala内部用途,
val 关键字后面跟着名字、等号和初始值。名字以字母和下载开头,
方法
方法是打包在某个名字下的小程序,在使用方法时,就会执行这个小程序,方法将一组活动组合起来并赋予一个名字,这个组织程序的最基本的方式。
通常需要将信息传递给方法。而方法将使用这些信息来计算结果,最终会返回结果
def methodName(arg1:Type1,args:Type2,……):returnType={ lines of code result }
方法定定义以关键字def 开始,后面跟着方法名和括号中的参数列表。参数是传递给方法的信息,每个参数都有一个名字,后面跟着冒号和参数类型。
参数列表是右括号的后面跟着一个冒号和调用方法时方法所产生的结果类型。
def multiplyByTwo(x:Int):Int={ println("Inside multiplyByTwo") x*2 } val r = multiplyByTwo(5) println(r) def addMultiply(x:Int,y:Double,s:String):Double={ println(s) (x+y)*2.1 } def r2:Double =addMultiply(7,9,"inside addMulltIply") println(r2) def test(x:Int,y:Double,s:String,expected:Double):Unit={ val result = addMultiply(x,y,s) assert=(result== expected,"Expected"+expected+" Got "+result) println("result: "+result) } test(7,9,"Inside addMultiply",33.6) object test{ def main(args: Array[String]): Unit = { //创建方法getSquare,它接受一个Int参数,并返回基平台,打印答案并使用下面的代码进行测试 def getSquare(x:Int):Int={ x * x } val a = getSquare(3) //assert(a==90,"所得到值是:"+a) //创建方法getSequreDouble,它接收一个double参数并返回其平方,打答案 def getSequreDouble(x:Double):Double={ x*x } //assert(1.44==getSequreDouble(1.2),"Your message here") //assert(1.44==getSequreDouble(5.7),"Your message here") //创建方法isArg1GreaterThanargs,它接受两个double参数。 //如果第一个参数比第二个大,那么返回true,否则返回false,打印安 def isArg1GreaterThanArg2(arg1:Double,args2:Double): Boolean ={ if(arg1>args2){ true }else{ false } } //创建方法getMe,它接受一个String并返回同一个的String,但是都转为小写字母 //有一个现string方法,名为toLowerCase,打印答案,它需要满足下面的测试 def getMe(str1:String):String={ str1.toLowerCase() } //assert("abcdefg"==getMe("abcdefg"),"Your message here") //assert("abcdEfg"==getMe("abcdefg"),"Your message here") //创建方法addStrings,它接受两个string参数,并返回连缀在一起的string使用。打印答案 //它需要满足下面的测试 def addString(a:String,b:String):String={ a+b } val s1 = addString("abc","def") assert(s1=="abcdef","abcdef") //assert("adbcde"==addString("abc","abdfdas2"),"not equals") //创建方法manyTimesString,它授受一个string和一个int参数,并返回第一个参数重复第二个参数次数后得 //String,打印答案,它需要满足下面的测试 def manyTimesString(test:String,x:Int):String={ var returnStr="" var x1 =0 for(x1 <- 1 until x){ returnStr=returnStr+test } returnStr } print(manyTimesString("abc",3)) println(manyTimesString("ab1111c",3)) def bmi(wight:Double,hight:Double):Double={ wight/(hight*hight) } println(bmi(98.5,1.71)) } //在计算顺序的练习中,你用使用磅和身高计算体重指数 //体重/身高的平方(国际单位kg/㎡) }
创建类
除了使用Range这样的预定义的类型,我们还可以定义自已的对象类型