zoukankan      html  css  js  c++  java
  • Scala 初级入门课程一

    package cn.dowhatyouwant.codes
    
    /**
      * Created by DengNi on 2016/8/31.
      * Scala 是动态语言,静态类型,因为难,所以用起来方便
      * spark 太优秀每个人都应该去学习,使用
      * 学习spark 优先推荐scala python
      * 基于jvm fp + oo
      * 跟java 互操作
      * interpreter ==scala shell
      * val  var
      * var h :String ,赋值后scala 自动推断数据类型
      * 函数
      *
      */
    object TestBegian {
     // 函数
      def hello(name:String):String ={ //定义一个函数,返回类型为string
        "hello " + name   //默认最后一行是return 值,所以不要加return
      }
      def helloScala(): Unit ={ //无参 函数前面的括号可以去掉
        println("my name is  xxxx")
      }
      def  add=(x :Int,y:Int) => x + y  //定义一个匿名函数 ,特别重要
      def add2(x :Int)(y:Int) = x*y  //柯里化
      def printEveryChar(c : String*)={ //接受一系列string 类型的参数,就是可变参数
        c.foreach(x=>println(x))
      }
      def xx(age:Int = 18)={ //调用时候如果不传入参数,就使用默认 参数  18
    
        age
    
      }
    
    
      // main f
      def main(args: Array[String]) {
        //println("hello there")
       // println(hello("scala"))
        //helloScala //对于无参函数,在调用时候不需要括号,建议加上吧
    
        //println(add(1,2))
        //println(add2(2)(4))
    
        //printEveryChar("a","b")
        //printEveryChar("c","d","f")
    
        //println(xx()) //只有无参函数才能去掉括号
        //条件表达式 if,scala 默认是不需要分号
        //val x =2
        //val b = if(x >1 ) 1 else  0
        //println(b)
    
        //loop
        //var (n,r) = (10,0)
        //while(n > 0){
        //  r =r +n
        //  n = n -1
    
        //}
        //println(r)
    
        //foreach
    
        //for
        //for ( i<-1 to 100){
    
        //  print(i)
        //  println()
        //}
    
        //for ( i<-1 until 10){ //不包含上线 10 ,这是跟to 的区别
    
         // print(i)
         // println()
        //}
    
        //for (i <- 1 to 100 if i%2 == 0){ //打印偶数  for 跟 if 表达式的合用
    
          //println(i)
    
        //}
        //循环表达式没有 continue and break
    
        //val p =new Person  //没有构造函数的时候 类的括号可以省略
    
        //p.name="hidoyouO"
    
        //print(p.name+":" + p.age)
    
        //val p = new Person("hijack",18) // new 变量的时候会打印 this is the primary constructor!
        // println(p.age + p.name)
        //val p = new Person("hijack",18,"f")
    
        //println(p.gender+p.name)
    
        val s = new Student("hijck",18,"Eng")//其实是初始化所有的方法和属性
        println(s.toString)
    
      }
    
    
    
    }
    
    class TestBegian{ //所有类默认是public 的
    
    
    }
    
    //class Person{
    
      //var name :String = _ //此时 String 是不能去掉的
     // var name :String = "hijack"  //var 定义的变量系统会自动生成geter &setter 方法
      //val age = 18    //val 定义的变量只会生成getter方法  ,符合我们的不能重新赋值的理念
    
      //private[this] var gender ="122"   //变量只能在Person 内使用,main 方法中的对象不能调用
    
    //}
    
    //1.主构造器,直接跟在类名后面,主构造器的参数最后会编译成类的字段
    //2.主构造器执行的时候,会执行类中所有的语句
    //3.假设参数声明时候不带var or val ,那么声明的变量相当于private【this】,只能在
    //在类中使用, class Person ( name :String,val age  : Int) 《= name
    class Person (val name :String,val age  : Int){
      println("this is the primary constructor!")
      var gender : String = _
      //辅助构造器名称wei this
      //每一个附属构造器必须首先调用已经存在的子构造器或是主构造器
      def this(name : String,age : Int,gender : String){
        this(name,age)
        this.gender=gender
      }
    }
    
    //继承
    //name age 是继承来的  ,major 是student 类特有的,所以需要使用val 定义
    class Student(name:String,age :Int,val major :String) extends Person(name, age){
    
      println("this is the subclass of Person,major is " + major)
    
      //重写父类的方法 和 字段  同时保持跟父类保持相同的数据类型
      override  def toString = "this from student"
    
    }







  • 相关阅读:
    【Python入门 】—— 关于Numpy的使用
    CSP 201512 | 201604考试题目
    【Python入门】 —— 用pycharm写7道简单的PTA题目吧!
    【Python入门】 —— 用pycharm写两道超简单的PTA题目~
    Crypto.AES 报错 | TypeError: Object type <class 'str'> cannot be passed to C code
    windows安装Pytorch报错:from torch._C import * ImportError: DLL load failed: 找不到指定的模块”解决方案
    Python中的self通俗理解(自己理解的,自我感觉比官网解释要容易懂)
    python获取token数据
    python根据对象的实例获取对象的属性值
    oracle查询某个字段不为空的sql语句
  • 原文地址:https://www.cnblogs.com/TendToBigData/p/10501383.html
Copyright © 2011-2022 走看看