文章目录

  • scala函数式变程
  • scala读取文件
  • 字符串插值
  • scala隐式转换
  • 模式匹配,偏函数,try catch

scala函数式变程

object AdFunctionApp {def main(args: Array[String]): Unit = {val l = List(1,2,3,4)列表里面的元素*2for(ele <- l){println(ele*2)}对列表中每一个元素都做一个操作println(l.map((x:Int) => x*2))println(l.map(x => x*2))println(l.map(_ * 2))println换行,print不换行l.map(_*2).foreach(x => println(x))l.foreach( x => println(x*2))筛选咯println(l.map(_*2).filter(_ >8))取前3个println(l.take(3))求和println(l.reduce(_+_))1-2-3-4println(l.reduce(_-_))用下面代码试试是什么意思println(l.reduceLeft(_-_))println(l.reduceRight(_-_))1,2-1,3-4,4l.reduceLeft((x,y) => {println(x+","+y)x-y})3,42,-11,3l.reduceRight((x,y) => {println(x+","+y)x-y})curry2相当于初始值,最后加上后面的结果println(l.fold(2)(_+_))相减看下面代码,结果为0println(l.fold(10)(_-_))10,19,27,34,4l.fold(10)((x,y) =>{println(x+","+y)x-y})里面要有判断条件println(l.count(_>1))扁平化操作val f=List(List(1,2),List(3,4))List(List(1, 2), List(3, 4))println(f)List(1, 2, 3, 4)println(f.flatten)List(2, 4, 6, 8)println(f.flatMap(_.map(_*2)))}def sum(a:Int,b:Int)=a+bcurrydef add(a:Int)(b:Int)=a+b
}

scala读取文件

//注意导这个包
import scala.io.Sourceobject FileApp {def main(args: Array[String]): Unit = {//读取文件val file = Source.fromFile("f:/asd.txt")for(line <- file.getLines()){println(line)}}
}

字符串插值

object StringApp {def main(args: Array[String]): Unit = {val name  ="asd"println("hello:"+name)//字符串插值println(s"hello:$name")//""""""好多输出val b =s"""|huanying asd|fuck you|$name""".stripMarginprintln(b)}
}

scala隐式转换

import scala.io.Source
//导入java的File类
import java.io.Fileimport ImplicitAspect._object ImplicitApp {def main(args: Array[String]): Unit = {//隐式转换,传进来个普通对象,赋予他高级对象的功能
//    implicit def man2superman(man: Man):Superman=new Superman(man.name)
//    val man =new Man("xxx")
//    //如果原函数有fly方法,优先使用原函数的
//    man.fly()//    implicit def file2RedFile(file:File):RichFile=new RichFile(file)val file = new File("f:/asd.txt")val content =file.read()println(content)}
}class Man(var name:String){
//  def fly()={
//    println("asd")
//  }
}class Superman(var name: String){def fly()={println("niubi")}
}class RichFile(val file:File){def read() =Source.fromFile(file.getPath).mkString
}//额外增加,将ord隐式转换为Ording[T],T是泛型
//implicit ord: Ordering[T]

上面那段程序可以把隐式转换单独包装,然后程序里导入这个包

import java.io.Fileobject ImplicitAspect {implicit def man2superman(man:Man):Superman = new Superman(man.name)implicit def file2RichFile(file:File):RichFile = new RichFile(file)
}

模式匹配,偏函数,try catch

import scala.util.Randomobject MatchApp {def main(args: Array[String]): Unit = {val teachers = Array("qwe","asd","zxc")//随机选一个val teacher=teachers(Random.nextInt(teachers.length))//    for(i <- 1.to(4)){
//      //随机选一个
//      val teacher=teachers(Random.nextInt(teachers.length))
//      println(teacher)
//    }//模式匹配
//    teacher match {
//      case "qwe"=> println("ewq")
//      case "asd"=> println("dsa")
//      case "zxc"=> println("cxz")
//    }//偏函数def saysomething(name:String)= name match {case "qwe"=> println("ewq")case "asd"=> println("dsa")case "zxc"=> println("cxz")}saysomething("qwe")
//进去是个字符串类型,出来也是字符串类型//模式匹配和偏函数,区别,被包在花括号没有match的一组case语句是偏函数def saysomething2:PartialFunction[String,String]={case "qwe"=> "ewq"case "asd"=> "dsa"case "zxc"=> "cxz"}println(saysomething2("asd"))def greeting(array: Array[String])={array match {case Array("zhangsan") => println("hi:zhangsan")case Array(x,y)=> println(s"hi:$x,$y")case Array("zhangsan",_*) => println("hi asd")case _=>println("welcome..")}}greeting(Array("zhangsan","asd"))try{val i=1/0println(i)}catch {//Ar毕竟是Exception的子类,但是如果写的更前,报Arcase e:Exception => println("aaaa")case e:ArithmeticException =>println("cuola")}finally {println("这个finall是一定要执行的")}}
}

scala函数式变程,curry,读取文件,字符串插值,隐式转换,模式匹配相关推荐

  1. Spark记录-Scala程序例子(函数/List/match/option/泛型/隐式转换)

    object func {def main(args:Array[String]):Unit={//函数赋值给变量时, 必须在函数后面加上空格和下划线.def sayHello(name: Strin ...

  2. mysql 隐式转换 索引_MySQL SQL优化之字符串索引隐式转换

    之前有用户很不解:SQL语句非常简单,就是select * from test_1 where user_id=1 这种类型,而且user_id上已经建立索引了,怎么还是查询很慢? test_1的表结 ...

  3. Scala入门到精通——第十八节 隐式转换与隐式参数(一)

    本节主要内容 隐式转换简介 隐式转换函数 隐式转换规则 隐式参数 1. 隐式转换简介 在Scala语言当中,隐式转换是一项强大的程序语言功能,它不仅能够简化程序设计,也能够使程序具有很强的灵活性.要想 ...

  4. 大数据Saprk----Spark基础-scala的隐式转换

    first Codec **public class Friend {public static void main(String[] args){System.out.println("B ...

  5. 20,sql 测试 : 1.4g 文件的 sql 运行测试,表关联,日期转换,字符编码,乱码解决,程序的 shell 执行,字符串转数字,三个隐式转换,用列分区,输出,sum over

    一 ,基础操作 : 1 ,表关联 : select stock.area,goods.smallLei,goods.typeColorId,weekofyear(to_date(stock.sellD ...

  6. scala当中的文件操作、网络请求和隐式转换

    scala当中的文件操作.网络请求和隐式转换 文件操作和网络请求 读取文件当中每一行的数据 读取词法单元和数字 读取网络资源.文件写入.控制台操作 读取网络资源 文件写入操作 控制台交互操作 scal ...

  7. 7.scala初识 柯里化、隐式参数、隐式转换、视图边界、上界、下界、协变、逆变

    1.前言: 学过java我们都知道,java中的继承是对类的增强,java中的代理.装饰是对对象方法的增强.而在scala中,隐式转换和隐式参数是Scala中两个非常强大的功能,隐式的对类的方法进行增 ...

  8. scala 环境搭建 变量 值 数据类型 元组 表达式块 语句 函数 柯里化 集合 面向对象 隐式转换

    scala (scalable的简写) scala是一个比较冷门的语言,不太被人们所知道 为什么这么冷门的语言现在被我们使用 很多的大数据的项目的源码是是用scala语言编写的. 因为大数据技术不断被 ...

  9. 2021年大数据常用语言Scala(三十八):scala高级用法 隐式转换和隐式参数

    目录 隐式转换和隐式参数 隐式转换 自动导入隐式转换方法 隐式转换的时机 隐式参数 隐式转换和隐式参数 隐式转换和隐式参数是scala非常有特色的功能,也是Java等其他编程语言没有的功能.我们可以很 ...

最新文章

  1. js删除组数中的某一个元素(完整代码附效果图)
  2. Zip文件中文乱码问题解决方法(MAC->Windows)
  3. r语言 plot_R和Python的特点对比,这样你就知道该怎么选择了
  4. PHP实现列表页综合筛选功能,dede织梦列表页联动筛选方法功能的实现
  5. 运行mysql时,提示Table ‘performance_schema.session_variables’ doesn’t exist
  6. c语言编写九宫格,关于九宫格的算法
  7. vs2005 vc++ 生成非托管的 不需要.net运行环境的exe程序方法
  8. opc读取ab的plc数据_C#读写 AB PLC 直接通过节点来读写数据 读写 AllenBradley PLC
  9. Linux ${}表达式详解
  10. CISCO路由器连接ADSL之PPPoE配置
  11. Webpack学习大纲
  12. 15 使用计算机应遵守行业道德规范,信息会考答案~没考的看下!
  13. Android 使用 Gradle 构建时,出现 Crunching Cruncher xxx.9.png failed 问题的解决方法
  14. python 统计检验_常用统计检验的Python实现(附完整代码)
  15. Facebook广告有哪些有效策略呢?
  16. 企业税务负面信息综合查询
  17. amigo幸运字符什么意思_OMG,12 个精致的 Java 字符串操作小技巧,学它
  18. windows 下使用nginx 实现负载均衡
  19. Linux系统必学必会知识点整理
  20. matlab和eigen在旋转向量,欧拉角,四元数,旋转矩阵转换的对比(一 旋转矩阵转其他)

热门文章

  1. vbs字符串正则_VBS正则表达式语法
  2. 怎样修改git用户名、密码和邮箱?
  3. 九章云极发布YLearn因果学习开源项目;字节跳动大量招聘芯片工程师;苹果被俄法院罚款约21.6万元 | 每日大事件...
  4. 针对HFS 2.3漏洞进行渗透测试提权(HFS:HttpFileServer)
  5. 公司里的技术总监CTO,天天都在干些啥?
  6. 数字电路:半加器和全加器实验
  7. 2010考研数学二第(15)题——导数应用:单调区间与极值
  8. 师生使用计算机不得,师生文明上网行为规范
  9. JavaScript 10进制转换为类似‘0x00d5’格式的16进制
  10. Python实现分钟倒计时