• Scala学习1


    Scala是一种静态语言、面向对象的函数式编程语言。它的程序代码以.scala结尾,编译时会编译成.class字节码在jvm上运行。

      类和方法默认是public的,不必显式声明public。

      return是可选的,方法调用会默认返回最后一行表达式;

      不需要再每行代码后面写";",如果是多行代码在一行则需要写";"

      scala建议优先使用val常量,而不是var。这样能提升不变性和函数式风格。

      scala中对象引用和调用方法之间的“.”是可以不写的,例如java中int a = 1*1;等同于scala中val a = 1.*(1)/val a = 1 * 1

      从技术层面上看scala是没有运算符的,+、-、*、/、%、!=、>、>=、<、<=运算符都是数值对象提供的方法。

    程序执行入口main函数

    object Test1 {

      def main(args: Array[String]) {

        println("hello scala")

      }

    }

    忽略main函数的可执行类

    object Test1 extends App {

      println("hello scala")

    }

    常量与变量的声明方式(变量声明后必须初始化)

    val a=1

    var b=1

    函数的声明

    循环与增强循环
     
      def main(args: Array[String]) {
        
        //输出从1到3
          for(i<-1 to 3){    // 实际上是调用1.to(3)方法,scala把所有都视为对象(数字1是RichInt类的方法,这个类型是由Int隐式转换来的。to()方法返回的是一个Range类的实例)
              print(i+",")     // 不换行输出。注意i是一个val常量,不是var变量。每次循环都创建一个叫做i的val常量,不可以在循环中改变常量i的值。
          }
        println()          // 换行输出
        
        //输出从1到2,until方法不包含最后一个值
        for(i<-1 until 3){ // 实际上是调用1.until(3)方法,scala把所有都视为对象(数字1是RichInt类的方法,这个类型是由Int隐式转换来的。until()方法返回的是一个Range类的实例)
          print(i+",")     // 不换行输出。注意i是一个val常量,不是var变量。每次循环都创建一个叫做i的val常量,不可以在循环中改变常量i的值。
        }
        println()          // 换行输出
        
        //输出从1到3
        (1 to 3).foreach(i=>print(i+",")) // 使用Range类的foreach()方法,foreach()方法接收的的参数是一个函数值,所以需要在括号中提供一段代码体
       
        
      }

    元组

     def main(args: Array[String]) {
        //元祖和多重赋值-1
        val (name, age, mail) = getPersonInfo();
        println("姓名:"+name+" 年龄"+age+" 邮箱"+mail)
        //元祖和多重赋值-2
        val info = getPersonInfo()
        println("姓名:"+info._1+" 年龄"+info._2+" 邮箱"+info._3)
        
      }
     
      //返回多个值的函数(姓名、年龄、邮箱)。java中通过对象、String数组和list,scala中使用元祖和多重赋值表现
      def getPersonInfo()={
        //创建包含3个对象的元祖
        ("zhangsan", "123", "zhangsan@126.com") //元祖是一个不变的对象序列,使用,分隔的值进行创建。
      }
     

  • 相关阅读:
    Blocks to Cubes
    poj1113凸包
    AtCoder Regular Contest 078D
    Codeforces Round #400
    hdu2196树形dp
    Codeforces Round #409
    Codeforces Round #424
    hdu1520树形dp第一题
    Codeforces Round #412
    poj2823单调队列
  • 原文地址:https://www.cnblogs.com/mengyao/p/4632304.html
Copyright © 2020-2023  润新知