package com.ws.spark.study.scala

import java.io.File
import org.scalatest.FlatSpec
import scala.io.Source class TestScala extends FlatSpec{ "for循环" should "成功" ignore { // 1. for中增加多个过滤
val files = new File(".").listFiles()
for(
file <- files
if file.getName.endsWith(".xml");
if file.isFile){
println(file)
} // 2. 多重for循环
def fileLines(file: File) = Source.fromFile(file).getLines().toList
def grep(pattern: String) =
for{
file <- files
if file.getName.endsWith(".xml")
line <- fileLines(file)
if line.trim.matches(pattern)}{
println(s"$file:${line.trim}")
}
grep("xml") // 3. 生成返回结果(Array[File] => Array[Int]的转换)
val forLineLengths = for {
file <- files if file.getName.endsWith(".xml")
line <- fileLines(file)
trimmed = line.trim if trimmed.matches(".*for.*")
} yield trimmed.length
} "list列表" should "success" ignore {
// 1. 与Array不同的是,List中的值不能改变 // 2. List具有协变性(Covariant),即类型S和T,如果S是T的子类,则List[S]也是List[T]的子类
val list1: List[Object] = List("hello", "world") // 空List的类型为Nothing,Nothing是Scala继承层次中的最底层
var list2: List[String] = List()
} "函数参数" should "success" ignore {
// 函数作为参数
def convertIntToString(f: Int => String) = f(4) // 函数f作为参数
val func = (x: Int) => s"$x s"
println(convertIntToString(func)) // 4 s // 高阶函数可以产生新的函数
def multiplyBy(factor: Double) = (x: Double) => factor * x
val func2 = multiplyBy(10)
func2(50)
} "函数闭包" should "success" ignore { // 在运行时确定more类型及值得函数称为闭包, more是个自由变量,在运行时其值和类型得以确定
// 这是一个由开放到封闭的过程,因此称为闭包
var more = 1
def func = (x: Int) => x + more
println(func(10))
more = 20
println(func(10))
}
}

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. vue param和query两种传参方式

    1.传参方式 query传参方式 this.$router.push({ path: "/home", query: {code:"123"} }) param ...

  2. 属性 Attribute

    一.创建属性 [AttributeUsage(AttributeTargets.Class | AttributeTargets.Constructor, AllowMultiple = true, ...

  3. flask读书笔记-flask web开发

    在应用启动过程中, Flask 会创建一个 Python 的 logging.Logger 类实例,并将其附属到应用实例上,通过 app.logger 访问 ===================== ...

  4. 现代浏览器性能优化-CSS篇

    我来填坑了,CSS篇终于写出来了,如果你没看过前面的JS篇,可以在这里观看. 众所周知,CSS的加载会阻塞浏览器渲染或是引起浏览器重绘,目前业界普遍推荐把CSS放到<head>中,防止在C ...

  5. C语言I作业12一学期总结

    一.我学到的内容 二.我的收获 作业 收获 C语言I博客作业01 学会了编程"Hello word" C语言I博客作业02 安装编译器,将代码建立在自己的文件里面 C语言I博客作业 ...

  6. django中权限控制到按钮级别

    权限控制到按钮级别 :          1.思路 :                  由于每个按钮都能认为是一个权限,所以每个按钮都会有一个自己的路径,这些路径都在用户登录时保存在了session ...

  7. eclipse p2更新官网wiki的例子

    官网的cvs好像没了,不过在github上找到一份,可用. https://github.com/anthonydahanne/make-p2-buildable-with-tycho/tree/ma ...

  8. office+visio2016版本一同安装说明

    安装所需软件: Office或者visio镜像 比如:cn_visio_professional_2016_x86_x64_dvd_6970929.iso 下载网址:http://pan.baidu. ...

  9. Python--编码的疑惑

    XML语法分析器在处理的时候,使用的是Unicode字符串,并且将其返回.Unicode可以处理特殊字符,但是如果将Unicode字符串转换为普通字符串,就会引发异常,比如Print, >> ...

  10. C#读取App.config/Web.config

    读取需要添加 System.Configuration 引用, 两种方式添加: 1:.NETFramework程序可以在引用右击添加引用,然后添加System.Configuration 2:引入Nu ...