zoukankan      html  css  js  c++  java
  • Scala入门系列(一):基础语法

    Scala基础语法

    Scala与JAVA的关系

    Scala是基于Java虚拟机,也就是JVM的一门编程语言,所有Scala的代码都需要经过编译为字节码,然后交由Java虚拟机来运行。
    所以Scala和JAVA是可以无缝互操作的,Scala可以任意调用Java的代码,这两种语言的关系事非常紧密的。

    Scala解释器的使用

    • REPL:Scala解释器也被称为REPL,会快速编译Scala代码为字节码,然后交给JVM来执行。
    • 计算表达式:命令行内,键入Scala代码,解释器会直接返回结果给你(附带变量类型)。
    • 内置变量:res0、res1
    • 自动补全

    声明变量

    • val:常量,声明后不可改变其值
    • var:变量,声明后可以修改值

    建议使用val,因为在大型复杂的spark分布式系统中,需要大量的网络传输数据,使用var可能会担心值被错误的更改,所以val可以很大程度上增加大型复杂分布式系统的健壮性和安全性。
    在JAVA大型复杂系统的研发中,也使用了类似的特性,我们通常会将传递给其他模块/ 组件/ 服务的对象,设计成不可变类(Immutable Class)。在里面也会使用java的常量定义,比如final,从而提高系统的鲁棒性和安全性。

    • 指定变量类型: val name: String = null
    • 声明多个变量:val name1, name2: String = null ; val num1, num2 = 100

    数据类型与操作符

    • 基本数据类型:Byte、Char、Short、Int、Long、Float、Double、Boolean, 咋一看与java的基本数据类型的包装类型相同,但是scala没有基本数据类型与包装类型的概念,统一都是类。scala会自己负责基本数据类型和引用数据类型的转化操作。
      • 例如,Scale提供了RichInt、RichDouble、RichChar,RichInt就提供了to函数,1 to 10,此处int先隐式转换为RichInt,然后在调用其to函数。
    • 基本操作符:与java类似
      • 但是,在scala中,这些操作符其实是数据类型的函数,比如1+1, 可以写成 1.+(1)
      • scala中没有提供++ 、--操作符。

    函数调用与apply函数

    函数调用方式:

    scala> import scala.math._
    import scala.math._
    
    scala> sqrt(2)
    res2: Double = 1.4142135623730951
    
    scala> pow(2, 4)
    res3: Double = 16.0
    
    scala> min(3, Pi)
    res4: Double = 3.0
    
    scala> max(3, Pi)
    res5: Double = 3.141592653589793
    

    注:如果调用函数时不需要传递参数,那么scala允许省略括号。

    apply函数:

    • 在Scala的object中,可以声明apply函数。而使用“类名()"的形式,其实就是“类型.apply()”的一种缩写。通常使用这种方法来构造类对象,而不是new。
    • 例如,"hello World"(6), 因为在StringOps类中有def apply(n:Int): Char的函数定义,所以实际上是"hello World".apply(6)的缩写。
    • 例如,Array(1, 2, 3, 4)相当于Array.apply(1, 2, 3, 4)

    lazy值

    如果一个变量声明为lazy, 则只有第一次使用该变量时,变量对应的表达式才会发生计算。这种特性对于特别耗时的计算操作特别有用,比如打开文件进行IO,进行网络IO等。

    scala> import scala.io.Source._
    import scala.io.Source._
    
    scala> lazy val lines = fromFile("D://test.txt").mkString
    lines: String = <lazy>
    

    即使文件不存在,也不会报错,只有第一次使用变量时会报错

    异常处理

    Scala中的异常处理与捕获机制与Java是非常相似的。

    try{
      throw new IllegalArgumentException("x should not be negative")
      } catch {
        case _: IllegalArgumentException => println("Illegal Argument!")
      } finally {
        print("release resources!")
    }
    
    // Exiting paste mode, now interpreting.
    
    Illegal Argument!
    release resources!
    
  • 相关阅读:
    用JS获取地址栏参数的方法(超级简单)
    返回前一页并刷新页面方法
    js 弹出确认 取消对话框
    微信“无法回答问题设置”失效
    百度地图api学习平台
    JQuery 定时器 (Jquery Timer 插件)
    select 框option添加属性 js计算价格 保持两位小数
    修改织梦分页标签样式
    一键导航
    关于memset赋值无穷大无穷小
  • 原文地址:https://www.cnblogs.com/LiCheng-/p/8017400.html
Copyright © 2011-2022 走看看