zoukankan      html  css  js  c++  java
  • scala 基础笔记

    view bound:必须传入一个隐式转换函数

    class [T <% Ordered [T]]

    content bound:必须传入一个隐式值

    class [T : Ordering]

                                              

    !异步发送消息

    !? 同步发送消息,等待反馈信息

    !!异步发送完成之后,返回一个future引用

    scala列表操作符::把心元素整合到现有列表的最前端

    scala里面Map 有2个特质:scala.collection.mutable 可变Map

    scala.collection.immutable 不可变Map

    scala 中如果一行开头用"""  表示开始 , 结尾用""" 表示结束

    操作符和操作方法:

    1+2 与(1).+(2) 表达的效果是一样

    val  s = "Hellon Word".toLowerCase   输出结果:hello word

    for {句子} yield {循环体}

    暂位符语法: _ > 0  坚持值是否大于 0

    val f = (_: Int) +(_ : Int)

    val b = sum(1, _: Int, 3) b(2) 输出结果 6

    闭包减少代码

     private def fileHere = new File(".").listFiles()
      def fileEnding(query: String) = {
        for (file <- fileHere; if file.getName.endsWith(query))
          yield  file
      }
    
      def fileContaining(query: String){
        for (file <- fileHere; if file.getName.concat(query))
          yield file
      }
    
      def filesRegex(query: String): Unit = {
        for (file <- fileHere; if file.getName.matches(query))
          yield  file
      }
    
      def fileMatching(query: String, matcher: (String, String) => Boolean){
        for (file <- fileHere; if matcher(file.getName, query))
          yield  file 
      }

    优化后的结果:

    一个方法之只要没有实现(即没有等号或者方法体) 它就是抽象的

    具体(concrete)

    多态动态绑定:

    样本类和模式匹配:case class name 方便调用

    abstract  class CaseClass {
      case class Var(name: String) extends CaseClass
      case class Number(num: Double) extends CaseClass
      case class UnOp(operator: String, args: CaseClass) extends CaseClass
      case class BinOp(operator: String, left: CaseClass, right: CaseClass) extends CaseClass
    
      def caseTest(){
      val v = Val("x")
      }
    
      def simplifyTop(cass: CaseClass) :CaseClass = cass match{
        case UnOp("-",UnOp("-",e)) => e
        case BinOp("+", e, Number(0)) => e
        case BinOp("*", e, Number(0)) => e
        case _ => cass
          // 选择器 match {备选项}
          //的一个参数匹配“-”,第二个参数匹配e的值
    
          //通配匹配
          expr match{
            case BinOp(op, left, right) =>
              println(expr + "is a binarry operation")
            case  _ =>
          }
          expr match {
            case BinOp(_,_,_) => println(expr + "is a birarry operation")
            case _ => println("is something else ")
          }
      }

    匹配固定长度序列模式

    匹配任意长度序列模式

    带有元组模式的匹配

    类型模式匹配:

    修改前:

    class Person(var firstName: String, var secondName: String, var age: Int){
    
        def getFirstName = firstName
        def getSecondName = secondName
        def GetAge = age
    
        def setFirstName(value:String):Unit = firstName = value
        def setLastName(value:String) = secondName = value
        def setAge(value:Int) = age = value
    
      override def toString =
        "[Person firstName:" + firstName + " lastName:" + secondName +
          " age:" + age + " ]"
    
    }

    添加BeanProperty 后

    如果在代码中加入 @scala.reflect.BeanProperty 就是相当于设置了get/set 方法

       class Person(fn:String, ln:String, a:Int)
        {
        @scala.reflect.BeanProperty
        var firstName = fn
        
        @scala.reflect.BeanProperty
        var lastName = ln
        
        @scala.reflect.BeanProperty
        var age = a
    
        override def toString =
            "[Person firstName:" + firstName + " lastName:" + lastName +
            " age:" + age + " ]"
        }

     读取文件信息

      def findFileName(): Unit ={
        val fileName = (new java.io.File(".")).listFiles()
        for {
          files <- fileName
          if files.listFiles()
          if files.getName.endsWith("scala")
        }System.out.print("file"+ files)
      }

    列表:参见List列表http://www.cnblogs.com/zhanggl/p/4984512.html

  • 相关阅读:
    [HDOJ4417]Super Mario(归并树)
    [POJ2104] K-th Number(归并树,二分)
    2017北理校赛G题 人民的名义(FFT)
    [CF762C] Two Strings(预处理,二分答案)
    [CF798D] Mike and distribution(贪心,鸽笼原理,随机)
    [CF798C] Mike and gcd problem(规律,gcd)
    2017北理校赛H题 青蛙过河(线段树, dp, 离散化)
    [CF798B] Mike and strings(暴力)
    [CF798A] Mike and palindrome(水题,trick)
    [CCPC2017]湘潭邀请赛
  • 原文地址:https://www.cnblogs.com/zhanggl/p/4954949.html
Copyright © 2011-2022 走看看