val list=List(1,2,3,4)
list.reduce((x:Int,y:Int)=>x+y)--->list.reduceLeft((x:Int,y:Int)=>x+y)

var first = true
var acc:Int = 0
op=(x:Int,y:Int)=>x+y

for循环
第一次循环:acc=1 first = false
第二次循环:acc=op(1,2)=1+2=3
第三次循环:acc=op(3,3)=3+3=6
第四次循环:acc=op(6,4)=6+4=10
======================================================================
val list=List(1,2,3,4)
list.reduceRight((x:Int,y:Int)=>x-y)

op(head, tail.reduceRight(op))---》op(1,List(2,3,4).reduceRight(op)---->op(2,List(3,4).reduceRight(op)-->op(3,List(4).reduceRight(op)=4)=3-4=-1)=2-(-1)=3)=1-3=-2

========================================================================
val list=List(1,2,3,4)
list.foldRight(0)(_-_) --->reverse.foldLeft(z)((right, left) => op(left, right))

List(4,3,2,1).foldLeft(z)((right, left) => op(left, right))

var acc = 0
var these = List(4,3,2,1)
while (!these.isEmpty) {
acc = op(acc, these.head)
these = these.tail
}

while循环
第一次while: acc=op(0,4)=>op(4,0)=4-0=4 these=List(3,2,1)
第二次while: acc=op(4,3)=>op(3,4)=3-4=-1 these=List(2,1)
第三次while: acc=op(-1,2)=>op(2,-1)=2-(-1)=3 these=List(1)
第四次while: acc=op(3,1)=>op(1,3)=1-3=-2 these=List()

=========================================================================
val array=Array(1,2,3,4)------>其本质是调用了Array这个object的apply方法

def apply(x: Int, xs: Int*): Array[Int] = {
//构建了一个跟目标数组长度一致的空的数组
val array = new Array[Int](xs.length + 1)
//把参数中的第一个元素赋值给空的数组的0下标
array(0) = x
var i = 1
for (x <- xs.iterator) { array(i) = x; i += 1 }
// array(1)=2 i=2
// array(2)=3 i=3
// array(3)=4 i=4
array--->Array(1,2,3,4)
}

import scala.collection.mutable._
Array(1,2,3,4).map(_+_)

import scala.collection.mutable.A
import scala.collection.mutable.B
import scala.collection.mutable.C
import scala.collection.mutable.D

第1节 Scala基础语法:scala中的方法源码分析的更多相关文章

  1. Spring中Bean命名源码分析

    Spring中Bean命名源码分析 一.案例代码 首先是demo的整体结构 其次是各个部分的代码,代码本身比较简单,不是我们关注的重点 配置类 /** * @Author Helius * @Crea ...

  2. BIZ中model.getSql源码分析

    功能:根据model.xml文件中配置的sql,获取对应的动态sql结果. 实例代码:String sql1 = model.getSql(dao.dbMeta());String sql2 = mo ...

  3. 【朝花夕拾】Android自定义View篇之(六)Android事件分发机制(中)从源码分析事件分发逻辑及经常遇到的一些“诡异”现象

    前言 转载请注明,转自[https://www.cnblogs.com/andy-songwei/p/11039252.html]谢谢! 在上一篇文章[[朝花夕拾]Android自定义View篇之(五 ...

  4. 【Java】NIO中Selector的select方法源码分析

    该篇博客的有些内容和在之前介绍过了,在这里再次涉及到的就不详细说了,如果有不理解请看[Java]NIO中Channel的注册源码分析, [Java]NIO中Selector的创建源码分析 Select ...

  5. Netty中的ChannelPipeline源码分析

    ChannelPipeline在Netty中是用来处理请求的责任链,默认实现是DefaultChannelPipeline,其构造方法如下: private final Channel channel ...

  6. Springboot中注解@Configuration源码分析

    Springboot中注解@Configuration和@Component的区别 1.先说结论,@Configuration注解上面有@Component注解,所以@Component有的功能@Co ...

  7. Hadoop 中 IPC 的源码分析

    最近开始看 Hadoop 的一些源码,展开hadoop的源码包,各个组件分得比较清楚,于是开始看一下 IPC 的一些源码. IPC模块,也就是进程间通信模块,如果是在不同的机器上,那就可以理解为 RP ...

  8. Java网络编程与NIO详解11:Tomcat中的Connector源码分析(NIO)

    本文转载 https://www.javadoop.com 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.c ...

  9. JDK1.7 中的HashMap源码分析

    一.源码地址: 源码地址:http://docs.oracle.com/javase/7/docs/api/ 二.数据结构 JDK1.7中采用数组+链表的形式,HashMap是一个Entry<K ...

随机推荐

  1. oracle备份报“EXP-00056: 遇到 ORACLE 错误 12541”

    今天准备接手一个新项目,首先是dang项目和备份数据库到本地,但是在备份数据库的时候报错误: EXP-00056: 遇到 ORACLE 错误 12541 ORA-12541: TNS: 无监听程序 E ...

  2. Plastic Bottle Manufacturer Tips: Use Caution For Plastic Bottles

    Plastic bottles use polyester (PET), polyethylene (PE), polypropylene (PP) as raw materials, after a ...

  3. IIS-URL重写参数

    参考:https://www.cnblogs.com/gggzly/p/5960335.html URL 重写规则由以下部分组成: 模式 - 可以理解为规则,分通配符和正则匹配     条件 - 可以 ...

  4. Go之第三方日志库logrus使用

    文章引用自 第三方日志库logrus使用 日志是程序中必不可少的一个环节,由于Go语言内置的日志库功能比较简洁,我们在实际开发中通常会选择使用第三方的日志库来进行开发.本文介绍了logrus这个日志库 ...

  5. .click() 和 onclick方法

    onclick=""只能绑定一次,再次绑定会把之前的覆盖 $('').click()可以绑定多次,再次绑定会在前一个程序执行完后触发

  6. mongodb 用户指引

    维护人:陈权 一.mongodb install on linuxcurl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6 ...

  7. python学习Day25--正则表达式1

    [知识点] # 所有模块要经历的两个步骤: ① 要操作的概念本身:正则表达式   时间 ② 使用模块取操作它:re                  time 1.正则表达式:一种匹配字符串的规则 # ...

  8. next_permutation的使用-Hdu1027

    Ignatius and the Princess II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K ( ...

  9. Vulnhub_DC7 记录

    基本步骤 经验 & 总结 对信息还是不敏感,其实也是因为对Drupal这个CMS并不熟悉,不知道哪些地方是默认的那些地方是作者修改,比如这个"DC7USER". 对Drup ...

  10. 4_1 古老的密码(UVa1339)<排序>

    古罗马帝国与各部门有一个强有力的政府系统,包括一个秘密服务部门.重要的文件以加密的形式发送防止窃听.在那个时代最流行的密码被称为替代密码和置换密码.例如,应用替代密码,改变所有字母“A”到“Y”字母表 ...