1. package com.ws.spark.study.scala
  2.  
  3. import java.io.File
  4. import org.scalatest.FlatSpec
  5. import scala.io.Source
  6.  
  7. class TestScala extends FlatSpec{
  8.  
  9. "for循环" should "成功" ignore {
  10.  
  11. // 1. for中增加多个过滤
  12. val files = new File(".").listFiles()
  13. for(
  14. file <- files
  15. if file.getName.endsWith(".xml");
  16. if file.isFile){
  17. println(file)
  18. }
  19.  
  20. // 2. 多重for循环
  21. def fileLines(file: File) = Source.fromFile(file).getLines().toList
  22. def grep(pattern: String) =
  23. for{
  24. file <- files
  25. if file.getName.endsWith(".xml")
  26. line <- fileLines(file)
  27. if line.trim.matches(pattern)}{
  28. println(s"$file:${line.trim}")
  29. }
  30. grep("xml")
  31.  
  32. // 3. 生成返回结果(Array[File] => Array[Int]的转换)
  33. val forLineLengths = for {
  34. file <- files if file.getName.endsWith(".xml")
  35. line <- fileLines(file)
  36. trimmed = line.trim if trimmed.matches(".*for.*")
  37. } yield trimmed.length
  38. }
  39.  
  40. "list列表" should "success" ignore {
  41. // 1. 与Array不同的是,List中的值不能改变
  42.  
  43. // 2. List具有协变性(Covariant),即类型S和T,如果S是T的子类,则List[S]也是List[T]的子类
  44. val list1: List[Object] = List("hello", "world")
  45.  
  46. // 空List的类型为Nothing,Nothing是Scala继承层次中的最底层
  47. var list2: List[String] = List()
  48. }
  49.  
  50. "函数参数" should "success" ignore {
  51. // 函数作为参数
  52. def convertIntToString(f: Int => String) = f(4) // 函数f作为参数
  53. val func = (x: Int) => s"$x s"
  54. println(convertIntToString(func)) // 4 s
  55.  
  56. // 高阶函数可以产生新的函数
  57. def multiplyBy(factor: Double) = (x: Double) => factor * x
  58. val func2 = multiplyBy(10)
  59. func2(50)
  60. }
  61.  
  62. "函数闭包" should "success" ignore {
  63.  
  64. // 在运行时确定more类型及值得函数称为闭包, more是个自由变量,在运行时其值和类型得以确定
  65. // 这是一个由开放到封闭的过程,因此称为闭包
  66. var more = 1
  67. def func = (x: Int) => x + more
  68. println(func(10))
  69. more = 20
  70. println(func(10))
  71. }
  72. }

Scala使用备注一的更多相关文章

  1. Spark&Hadoop:scala编写spark任务jar包,运行无法识别main函数,怎么办?

    昨晚和同事一起看一个scala写的程序,程序都写完了,且在idea上debug运行是ok的.但我们不能调试的方式部署在客户机器上,于是打包吧.打包时,我们是采用把外部引入的五个包(spark-asse ...

  2. scala知识点(二)

    Scala允许使用三个引号来进行多行字符引用:(引自) val longString = """Line 1 Line Line """; ...

  3. Scala Web 框架——Lift(一)准备工作

    [Lift]Scala Web 框架——Lift(一)准备工作 Lift 官方网站:http://liftweb.net/ 下载 http://liftweb.net/download 下载.zip压 ...

  4. spark RDD编程,scala版本

    1.RDD介绍:     RDD,弹性分布式数据集,即分布式的元素集合.在spark中,对所有数据的操作不外乎是创建RDD.转化已有的RDD以及调用RDD操作进行求值.在这一切的背后,Spark会自动 ...

  5. 【Scala篇】--Scala中集合数组,list,set,map,元祖

    一.前述 Scala在常用的集合的类别有数组,List,Set,Map,元祖. 二.具体实现 数组   1.创建数组 new Array[Int](10) 赋值:arr(0) = xxx Array[ ...

  6. Spark开发环境搭建(IDEA、Scala、SVN、SBT)

    软件版本 软件信息 软件名称 版本 下载地址 备注 Java 1.8 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-dow ...

  7. Spark集群搭建【Spark+Hadoop+Scala+Zookeeper】

    1.安装Linux 需要:3台CentOS7虚拟机 IP:192.168.245.130,192.168.245.131,192.168.245.132(类似,尽量保持连续,方便记忆) 注意: 3台虚 ...

  8. java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError: scala/runtime/java8/JFunction1$mcII$sp

    报错信息: Exception in thread "main" java.lang.BootstrapMethodError: java.lang.NoClassDefFound ...

  9. Maven Java项目添加Scala语言支持

    为了在一个普通的使用Maven构建的Java项目中,增加对Scala语言的支持.使得其能够同时编译Java和Scala语言的文件.其实很简单的一件事情,只需要在pom.xml文件中的build部分中的 ...

随机推荐

  1. Java 基础 - Set接口 及其实现类HashSet/LinkedHashSet/TreeSet

    笔记: /**Set接口 及其实现类 * 公用操作同Collection: * * ①size(),clear()②isEmpty(),③contains(),④add()方法 和remove()方法 ...

  2. gorm 更新数据时,0值会被忽略

    原文: https://www.tizi365.com/archives/22.html ------------------------------------------------------- ...

  3. 操作系统-chapter1

    课程:https://mooc.study.163.com/learn/1000002004?tid=2402971010&_trace_c_p_k2_=f79694c7fc04429bb9b ...

  4. vue 项目中使用postMessage问题总结

    问题描述: 由于目前做的项目分成两个项目,通过iframe嵌套,所以用到了 postMessage 当监听传过来的值的时候  出现了接受多次的问题 产生原因: 我的监听事件是放在home页 mount ...

  5. 解决使用JPA时对象在set属性时更新了数据库问题

    https://www.jianshu.com/p/1100814ff54f 之前也遇到过一次这个问题,打印的日志中也可以看见update相关的sql语句,但当时不知道为什么会去自动更新,就用了别的方 ...

  6. 场效应管种类-场效应管N、P沟道与增强、耗尽型工作原理等知识详解 如何选用晶体三极管与场效应管的技巧

    http://www.kiaic.com/article/detail/1308.html 场效应管种类场效应管 场效应晶体管(Field Effect Transistor缩写(FET))简称场效应 ...

  7. 洛谷P1330 封锁阳光大学【dfs】

    题目:https://www.luogu.org/problemnew/show/P1330 题意:一个无向边,一个河蟹可以占领一个点,但一个点只能被一个河蟹占领. 占领了一个点之后,这个点所有的边都 ...

  8. E:last-child

    E:last-child 语法: E:last-child { sRules } 说明: 匹配父元素的最后一个子元素E.大理石平台厂家大理石平台厂家 要使该属性生效,E元素必须是某个元素的子元素,E的 ...

  9. 034_非交互自动生成 SSH 密钥文件

    #!/bin/bash#-t 指定 SSH 密钥的算法为 RSA 算法;-N 设置密钥的密码为空;-f 指定生成的密钥文件存放在哪里 rm -rf ~/.ssh/{known_hosts,id_rsa ...

  10. 02_通过位置变量创建 Linux 系统账户及密码

    #!/bin/bash#$1 是执行脚本的第一个参数,$2 是执行脚本的第二个参数useradd "$1"echo "$2" | passwd --stdin ...