美文网首页
2020-11-13-Scala-33(一些语法的回顾5)

2020-11-13-Scala-33(一些语法的回顾5)

作者: 冰菓_ | 来源:发表于2020-11-12 07:48 被阅读0次

一个注意事项

    println(Array[Int](10).mkString(","))  //10
    println(new Array[Int](10).mkString(","))    // 0,0,0,0,0,0,0,0,0,0

一个补充:java类五大成员 属性,方法,内部类,构造器,代码块

1.嵌套类(内部类)

image.png

对比java和scala学习

public class Test8 {
    public static void main(String[] args) {
        //访问成员内部类
        OutclassDemo.Inner inner = new OutclassDemo().new Inner();
        //访问静态内部类
        OutclassDemo.InnerclassDemo innerclassDemo = new OutclassDemo.InnerclassDemo();
    }
}

class  OutclassDemo{


       static class InnerclassDemo{

       }

       class Inner{

       }
}
public class Test8 {
    public static void main(String[] args) {
        //访问成员内部类
        OutclassDemo.Inner inner = new OutclassDemo().new Inner();
        //访问静态内部类
        OutclassDemo.InnerclassDemo innerclassDemo = new OutclassDemo.InnerclassDemo();
    }
}

class  OutclassDemo{


       static class InnerclassDemo{

       }

       class Inner{

       }
}
内部类访问外部类属性方法(采用取别名的方法访问)
image.png
import com.tongyongtao.MyScalaTest
import com.tongyongtao.MyScalaTest.Day22

object Test1 {
  def main(args: Array[String]): Unit = {
    val clazz = new OutClass
    val clazz1 = new OutClass
    val clazz2 = new OutClass

    //创建非静态嵌套类
    val clazz22 = new clazz.InnnerClass
    val clazz21 = new clazz1.InnnerClass
    //创建静态嵌套类
    val c = new OutClass.InnterSC
    //不能这样写
    // clazz2.InnterSC()
    clazz22.show()
  }
}

class OutClass {

  Inner =>

  class InnnerClass {
    def show() = {
      println(Inner.name)
    }
  }

  var name = "小明"
}

object OutClass {

  class InnterSC {

  }

}

2.隐式转换

1.类型的转换
2.不破坏原来类的结构上,赋予类其他功能

3.隐式值

1.implicit的优先级高于默认值

4.隐式类

1.不能放在类外面,编译器不支持,不能同名称

代码如下:

object Test2 {
  def main(args: Array[String]): Unit = {
          var int = 1.1
          implicit  var s ="mysql"
          change1
          val mysql = new Mysql
           mysql.show()
           mysql.add()
  }
   //隐式转换
  implicit def change(int: Int)={
        int.toDouble
   }
  //隐式值
  def change1(implicit string: String="hhh")={
           println(string)
  }
  //隐式类
  implicit  class change2(val m :Mysql){
    def add(): Unit ={
      println(m+ "add")
    }
  }
}
class Mysql{
    def show(): Unit ={
         println("mysql")
    }
}

5.偏函数

image.png
var list = List(1,2,3)
            println(list.collect({ case i: Int => i + 1 }))
 //   println(list.collect(data => data match { case i: Int => i + 1 }))

相关文章

网友评论

      本文标题:2020-11-13-Scala-33(一些语法的回顾5)

      本文链接:https://www.haomeiwen.com/subject/fhrsbktx.html