scala函数式变程,curry,读取文件,字符串插值,隐式转换,模式匹配
文章目录
- 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,读取文件,字符串插值,隐式转换,模式匹配相关推荐
- Spark记录-Scala程序例子(函数/List/match/option/泛型/隐式转换)
object func {def main(args:Array[String]):Unit={//函数赋值给变量时, 必须在函数后面加上空格和下划线.def sayHello(name: Strin ...
- mysql 隐式转换 索引_MySQL SQL优化之字符串索引隐式转换
之前有用户很不解:SQL语句非常简单,就是select * from test_1 where user_id=1 这种类型,而且user_id上已经建立索引了,怎么还是查询很慢? test_1的表结 ...
- Scala入门到精通——第十八节 隐式转换与隐式参数(一)
本节主要内容 隐式转换简介 隐式转换函数 隐式转换规则 隐式参数 1. 隐式转换简介 在Scala语言当中,隐式转换是一项强大的程序语言功能,它不仅能够简化程序设计,也能够使程序具有很强的灵活性.要想 ...
- 大数据Saprk----Spark基础-scala的隐式转换
first Codec **public class Friend {public static void main(String[] args){System.out.println("B ...
- 20,sql 测试 : 1.4g 文件的 sql 运行测试,表关联,日期转换,字符编码,乱码解决,程序的 shell 执行,字符串转数字,三个隐式转换,用列分区,输出,sum over
一 ,基础操作 : 1 ,表关联 : select stock.area,goods.smallLei,goods.typeColorId,weekofyear(to_date(stock.sellD ...
- scala当中的文件操作、网络请求和隐式转换
scala当中的文件操作.网络请求和隐式转换 文件操作和网络请求 读取文件当中每一行的数据 读取词法单元和数字 读取网络资源.文件写入.控制台操作 读取网络资源 文件写入操作 控制台交互操作 scal ...
- 7.scala初识 柯里化、隐式参数、隐式转换、视图边界、上界、下界、协变、逆变
1.前言: 学过java我们都知道,java中的继承是对类的增强,java中的代理.装饰是对对象方法的增强.而在scala中,隐式转换和隐式参数是Scala中两个非常强大的功能,隐式的对类的方法进行增 ...
- scala 环境搭建 变量 值 数据类型 元组 表达式块 语句 函数 柯里化 集合 面向对象 隐式转换
scala (scalable的简写) scala是一个比较冷门的语言,不太被人们所知道 为什么这么冷门的语言现在被我们使用 很多的大数据的项目的源码是是用scala语言编写的. 因为大数据技术不断被 ...
- 2021年大数据常用语言Scala(三十八):scala高级用法 隐式转换和隐式参数
目录 隐式转换和隐式参数 隐式转换 自动导入隐式转换方法 隐式转换的时机 隐式参数 隐式转换和隐式参数 隐式转换和隐式参数是scala非常有特色的功能,也是Java等其他编程语言没有的功能.我们可以很 ...
最新文章
- js删除组数中的某一个元素(完整代码附效果图)
- Zip文件中文乱码问题解决方法(MAC->Windows)
- r语言 plot_R和Python的特点对比,这样你就知道该怎么选择了
- PHP实现列表页综合筛选功能,dede织梦列表页联动筛选方法功能的实现
- 运行mysql时,提示Table ‘performance_schema.session_variables’ doesn’t exist
- c语言编写九宫格,关于九宫格的算法
- vs2005 vc++ 生成非托管的 不需要.net运行环境的exe程序方法
- opc读取ab的plc数据_C#读写 AB PLC 直接通过节点来读写数据 读写 AllenBradley PLC
- Linux ${}表达式详解
- CISCO路由器连接ADSL之PPPoE配置
- Webpack学习大纲
- 15 使用计算机应遵守行业道德规范,信息会考答案~没考的看下!
- Android 使用 Gradle 构建时,出现 Crunching Cruncher xxx.9.png failed 问题的解决方法
- python 统计检验_常用统计检验的Python实现(附完整代码)
- Facebook广告有哪些有效策略呢?
- 企业税务负面信息综合查询
- amigo幸运字符什么意思_OMG,12 个精致的 Java 字符串操作小技巧,学它
- windows 下使用nginx 实现负载均衡
- Linux系统必学必会知识点整理
- matlab和eigen在旋转向量,欧拉角,四元数,旋转矩阵转换的对比(一 旋转矩阵转其他)
热门文章
- vbs字符串正则_VBS正则表达式语法
- 怎样修改git用户名、密码和邮箱?
- 九章云极发布YLearn因果学习开源项目;字节跳动大量招聘芯片工程师;苹果被俄法院罚款约21.6万元 | 每日大事件...
- 针对HFS 2.3漏洞进行渗透测试提权(HFS:HttpFileServer)
- 公司里的技术总监CTO,天天都在干些啥?
- 数字电路:半加器和全加器实验
- 2010考研数学二第(15)题——导数应用:单调区间与极值
- 师生使用计算机不得,师生文明上网行为规范
- JavaScript 10进制转换为类似‘0x00d5’格式的16进制
- Python实现分钟倒计时