微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

scala基础一

1.声明值和变量值

    val name:type=initvalue //不可修改变量 
    var name:type=initvalue //  可修改

其中名字name以字母或下划线开头,后面跟着字母、下划线或数字类型type可省略,
scala自动会区分不同类型初始值initvalue

 val a= 1
 var b: Double=1
 var c="Helloworld"

2.常用类型8种数值类型

Byte Char Short Int Long Float Double Boolean
类型与Java不同的是,这些类型都是类,自带方法

   1.toString()//返回字符串"1"
   1.to(3)  //返回Range(1,2,3)

3.算数和操作运算符重载,与Java不同点

   1)么有++和--
   2)操作符其实是方法,a+b其实是a.+(b)

4.条件表达式

if/else与java一样,不过在scala中可以把if/else表达式的值赋值给变量

  val s=if (x>0) 1 else -1

5. 块表达式也可以赋值

   val a={
          val b=1 
          val c=5b+c
   }

6.输入和输出

输出:与c++类似,print(),printf(),println()
输入: readline(),八个类型read,如readInt,readDouble()....

    val name=readLine("your name:")
    println("name is "+name)

7. 循环

  while(n>0){....}
  for(i< 1 to 10){....}//循环1到10
  for(i< myarray){....}
  myarray.foreach(i=>{....})

8. 函数

  def methodName(arg1:type1,arg2 type2) returnType={.....result}

函数的定义关键字def开始,后面跟着方法名和括号的参数列表。参数名:参数类型
参数列表后跟着一个冒号和一个返回结果类型

 def abs(x:Double):Double= {if(x>=0) x else -x} //可以省略括号 

9.认参数、带名参数、变长参数

定义函数时,我们可以给函数设置认值

  def corde(str:String,left:String ="[",right:String ="]") =left +str +right

此时直接调用 corde("Hello")会得到"[Hello]"另外可以再使用函数的时候,指定参数名,就不需要跟参数列表顺序完全一致

  println corde(left="<<<", str="Hello", right =">>>")

还可以实现混用未命名参数和带名参数,注意未命名参数要排在前面

  corde("Helo", right="]]") //输出"[ Hello]]

scala 可以实现变长参数,可以让函数接受任意多的参数,如下

  def sum(args: Int*)={ 
   var result =0
   for(arg <args)
   result+ = arg
   result
} 

注意以下的用法的正确性

val s=sum(1,4,9,16,25)//正确
val ss=sum(1 to 5) //错误,不接受序列
val sss=sum(1 to 5:_*)  //正确,追加:_*做参数序列

10.过程
过程即函数体在花括号前没有=号,返回类型为Unit,也就是过程不返回值

def book(s: String){
  //没等号,这个是过程,用来打印书名号
  println("<<"+s+">>")
}

11.赖值当val被声明为lazy时,直到我们首次对它取值,才开始初始化

lazy val word = scala.io.source.fromfile("/usr/share/words").mkString 
//words 没有被调用文件也不会打开,不会进行初始化

12.异常
scalar中的异常与java相似try{}catch{}finally{}不同的是 scala没有受检异常,即不需要说函数方法可能会抛出某种异常,且 scala捕获异常的语法采用的是模式匹配

try {
  process(new URL("http://www.baidu....."))
}catch{
  case_:MalformedURLException =>println("bad url ")
  case ex:IOException =>ex.printstacktrace()
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐