Dream------scala--函数定义、流程控制、异常处理

            Dream------scala--函数定义、流程控制、异常处理

一、函数的定义

  1、新建工程

    

  2、创建一个object

package com.wls.scala.hello

/**
 * Created by wls on 2015年8月11日21:06:332.
 */
object ScalaBasics {

  def main(args : Array[String]): Unit ={

  }
}

  def main(args : Array[String]) : Unit={}

   上面这个就项目于java语言的main方法。(public static void main。。。)------>为什么可以没有static关键字呢

  unit:实际上是这个函数的返回值,unit代表没有,相当于java的void。此处可以去掉,直接写成(def main(args : Array[String]) {})

  3、创建一个函数

 

package com.wls.scala.hello

/**
 * Created by wls on 2015年8月11日21:06:332.
 */
object ScalaBasics {

  //没有参数,没有返回值的普通函数
  def dowhile(){
    //定义一个变量,(val定义一个产量,注意scala声明参数的时候是没有java中的int、String之类的,他有自动识别类型的功能)
    //一般情况使用var、val
    var line =""
    do{
      line =readLine//获取控制台输入写成这样line =readLine()也是可以的
      println("Read : "+line)
    }while(line !="")
  }

  //main 方法定义的函数
  def main(args : Array[String]): Unit ={
    //打印一句话,注意scala语法,在这里分号是可以省略的。(scala在设计的时候认为手指多按一个字符都是痛苦的事情)
    //println("This is scala")
    //调用dowhile函数
    dowhile
  }
}

  4、一个有参数有返回值得函数

  

  //有参数有返回值的函数
  def looper(x : Long, y : Long ) : Long = {
    var a = x
    var b = y
    while(a !=0){
      val temp = a
      println("temp"+temp)
      a = b%a
      b = temp
    }
    b
  }
  //main 方法定义的函数
  def main(args : Array[String]): Unit ={
    //打印一句话,注意scala语法,在这里分号是可以省略的。(scala在设计的时候认为手指多按一个字符都是痛苦的事情)
    //println("This is scala")
    //调用dowhile函数
    //dowhile
    //调用looper
    //这个结果是2,(%,是取余操作),val不是不可变的吗?应该是100啊。注意val产量的生命周期,它声明在了函数体内部
    //可以通过debug模式看的一清二楚
    println(looper(100,298))
  }

二、流程控制

  1、if语句

  def main(args : Array[String]): Unit ={
    //如果参数不为空,则把第一个参数赋值给file,否则,把“scala.txt”赋值给file
    val file = if(!args.isEmpty) args(0) else "scala.txt"
  }

  2、for循环

  

    //打印1--10,,此处实际上1是个对象 ,可以写成1.to(10)
    for(i <- 1 to 10){
      println("Number is :"+i)
    }

    //增强for循环,获取当前目录下的文件,并循环打印出来
    val files = (new File(".")).listFiles()
    for(file <- files){
      println(file)
    }

   3、while do ...while

注意:写在object中的所有内容都是静态的(函数、变量、常量等) ,所以你的代码如果不是在方法区(def定义的函数)而是直接写在了object中,不用调用

    也会执行(类似java的静态代码块)

object ScalaBasics {

  //类似java的静态代码块,无需调用,也会执行,常用于参数初始化
  println("Hello wls")
}

三、异常处理

  

 //异常处理
    //和java基本类似,值得注意的是异常的捕获使用的是case,也就是说可以写多个case,(而java是多个catch)匹配第一个,匹配上就抛出
    val n = 99
    val f = "Spark.txt"
    try{
      val half = if(n%2==0) n/2 else throw
      new RuntimeException("N must be event")
    }catch {
      //Exception代表异常的类型,=>后面的代表异常怎么处理
      case e :FileNotFoundException  => {println("The exception is :"+e.getMessage)}
      case e :Exception => {println("The exception is :"+e.getMessage)}
    }finally {
      //释放一些资源啊什么的
    }

相关来源:

DT大数据梦工厂,微信公众号是:DT_Spark,每天都会有大数据实战视频发布,请您持续学习。
相关资料:
scala深入浅出实战经典完整视频、PPT、代码下载:
百度云盘:http://pan.baidu.com/s/1c0noOt6
腾讯微云:http://url.cn/TnGbdC
360云盘:http://yunpan.cn/cQ4c2UALDjSKy  访问密码45e2

时间: 2024-11-03 22:18:41

Dream------scala--函数定义、流程控制、异常处理的相关文章

王家林亲传《DT大数据梦工厂》第二讲Scala函数定义、流程控制、异常处理入门

你想了解大数据,你想成为年薪百万吗?那你还等着什么,快点来吧!跟着王家林老师学习spark大数据 第二讲主要讲了Scala函数定义.流程控制.异常处理入门 函数定义: 关键字(def) 函数名称 参数(参数名称:参数类型):返回内容类型  =  { 函数体 } 注意: Unit:空的返回内容 Scala结束语是不需要写分号 下面一代码为例: //不带参数 Object  ScalaBasics{ def doWhile(){ var line = “” do{ line = readLine()

C语言基础之函数和流程控制

函数和流程控制也是每个编程语言的基本概念,函数是划分模块的最小单位,良好的函数规划能直接提升软件的质量,C语言的流程控制主要由以下几个语句组成,条件分支语句.选择语句.循环语句.goto语句.return语句等. 函数的定义 一个函数包含返回值.函数名和参数列表,如下定义了一个返回值为 int 函数名为show拥有一个int类型参数的函数 int show(int param) {     printf("这是一个名为show的函数");     return 0; } 再来定义个没有

视图,触发器,事务,存储过程,函数与流程控制,索引

一.视图 1.什么是视图 虚拟表:在硬盘中没有的,通过查询在内存中拼接的表 视图:通过查询得到一张虚拟表,保存下来,下次可直接使用 2.为什么要用视图 如果要频繁使用一张虚拟表,可以不用重复查询 3.如何用视图 create view teacher2course as select * from teacher inner join course on teacher.tid = course.teacher_id; 4.删除视图 drop view teacher2course; 5.强调

mysql存储过程、存储函数及流程控制

存储过程 一.基本语法 create procedure sp_name([proc_parameter[,...]]) [characteristic...]routine_body begin end sp_name 表示存储过程的名字 proc_parameter 存储过程参数例表[IN OUT INOUT]三个部分组成 其中IN 表示传进来的参数 其中OUT 表示传出去的参数 其中INOUT 表示传进来但最终传回的参数 routine_body 参数是SQL代码的内容(类似于触发器的fo

Scala学习回顾(二)---- scala函数定义、流程控制及异常处理

注:本文学习源自:DT大数据梦工厂(微信公众号:DT_Spark) 1.上一节中我们了解到scala hello world,具体定义一个函数如下: 2.定义一个没有参数的函数,如下: 运行结果: 3.定义一个有参数的函数,如下: 4.流程控制 如果运行的时候,输入了参数,则情况如下: 方式二: 也可以将函数直接放入输出语句中: 如下: println(if (!args.isEmpty) args(0) else "scala.txt") 5.for循环 方式1: 方式2:(列出当前

02Scala学习-Scala函数定义、流程控制、异常处理入门实战

一 Scala 函数的定义 按照以下格式定义scala函数. def 函数名称(函数输入参数类型){ //函数的实现提 } 1) 第一个简单的例子 HelloWorld object Test2 { def main(args: Array[String]):Unit = { println("HelloWorld") } } a)可以看到输出语句的结尾没有以“;”结束,因为scala的设计者认为,多大一个字符对开发者来说是痛苦的. 他不太赞成在语句的结束写 “;” , 但你也可以写 

[原创]Scala学习:流程控制,异常处理

1.流程控制 1)do..while 1 def doWhile(){ 2 var line="" 3 do{ 4 line = readLine() 5 println("readlineConetent" + line ) 6 }while(line != " ") 7 } 2)for 方式一: 1 for (arg <-args) 2 println(arg) 方式二: 1 for (i <- 1 to 10 if i % 2

Mysql-自带的一些功能,基本用法(视图,触发器,事务,存储过程,函数,流程控制)

一. 视图 二. 触发器 三. 事务 四. 存储过程 五. 函数 六. 流程控制 一 .视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的临时表摘出来,用视图去实现,这样以后再想操作该临时表的数据时就无需重写复杂的sql了,直接去视图中查找即可,但视图有明显地效率问题,并且视图是存放在数据库中的,如果我们程序中使用的sql过分依赖数据库中的视图,即强耦

四十二、视图、触发器、事务、储存过程、函数、流程控制和索引等知识的应用

一.视图 1.什么是视图 视图就是通过查询得到一张虚拟表,然后保存下来,下次直接使用即可 2.为什么用视图 当反复用到两张表的连接操作时,可以将连成的表当做视图保存下来,下次直接使用 3.怎么用视图 create view teacher2course as select * from teacher inner join course on teacher.tid = course.teacher_id; 删除视图:drop view teacher2course 4.注意: 在硬盘中,视图只

mysql基础教程(四)-----事务、视图、存储过程和函数、流程控制

事务 概念 事务由单独单元的一个或多个SQL语句组成,在这 个单元中,每个MySQL语句是相互依赖的.而整个单独单 元作为一个不可分割的整体,如果单元中某条SQL语句一 旦执行失败或产生错误,整个单元将会回滚.所有受到影 响的数据将返回到事物开始以前的状态:如果单元中的所 有SQL语句均执行成功,则事物被顺利执行. 存储引擎 概念 在mysql中的数据用各种不同的技术存储 在文件(或内存)中. 查看 通过 show engines: 来查看mysql支持的存储引擎. 常见引擎 在mysql中用的