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

转载于:https://www.cnblogs.com/wangliansong/p/4722531.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值