zoukankan      html  css  js  c++  java
  • scala note

    trait(特质)未被实现的方法,默认就是抽象的

    trait Logger {
      def log(message: String) // like an abstract method
    }

    implementing of derived class

    class CosoleLogger extends Logger {
      def log(message: String) { println(message) } // 可不需要override
    }

    注意: 当特质改变时, 有被mix-in的类都必须重新编译。

    在scala中应避免使用foreach,foreach没有返回值也就是Unit,在函数式编程中不返回任何结果的操作,很有可能进行有副作用的操作.

    for ( x <- 1 to 5 ) {
      // 无法返回任何值
      println(x)
    }
    //等同于foreach
    (1 to 5).foreach { x=> 
     //无法返回任何值
     println(x)
    }

    yield在scala中与c#意义完全不同,yield相当于c#中的select加上toList. 或toArray等等,是List还是Array这取决于原来的集合对象类型.

    map方法的作用很大,可将原来的值或对象进行转换或运算成另一个结果,特别是搭配Option[A]后在处理Null的问题上起了很大的作用,后面会提到.

    for ( x <- 1 to 5 ) yield x
    res51: scala.collection.immutable.IndexedSeq[Int] = Vector(1, 2, 3, 4, 5)
    //等同于map (1 to 5).map(x => x)
    res52: scala.collection.immutable.IndexedSeq[Int] = Vector(1, 2, 3, 4, 5)

    //结论:返回的结果res51和res52无二致
     
  • 相关阅读:
    HanTTS简单文档
    一张包含所有颜色的图片
    shiro整合SpringMVC基于xml
    设计模式-享元模式
    关于volatile关键字实现的个人理解
    重量级锁
    轻量级锁
    偏向锁
    Seata概念的总结
    苹果手机怎么把资源库的APP放到桌面
  • 原文地址:https://www.cnblogs.com/jHenry/p/4280474.html
Copyright © 2011-2022 走看看