第1节 Scala基础语法:scala中的方法源码分析
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中的方法源码分析的更多相关文章
- Spring中Bean命名源码分析
Spring中Bean命名源码分析 一.案例代码 首先是demo的整体结构 其次是各个部分的代码,代码本身比较简单,不是我们关注的重点 配置类 /** * @Author Helius * @Crea ...
- BIZ中model.getSql源码分析
功能:根据model.xml文件中配置的sql,获取对应的动态sql结果. 实例代码:String sql1 = model.getSql(dao.dbMeta());String sql2 = mo ...
- 【朝花夕拾】Android自定义View篇之(六)Android事件分发机制(中)从源码分析事件分发逻辑及经常遇到的一些“诡异”现象
前言 转载请注明,转自[https://www.cnblogs.com/andy-songwei/p/11039252.html]谢谢! 在上一篇文章[[朝花夕拾]Android自定义View篇之(五 ...
- 【Java】NIO中Selector的select方法源码分析
该篇博客的有些内容和在之前介绍过了,在这里再次涉及到的就不详细说了,如果有不理解请看[Java]NIO中Channel的注册源码分析, [Java]NIO中Selector的创建源码分析 Select ...
- Netty中的ChannelPipeline源码分析
ChannelPipeline在Netty中是用来处理请求的责任链,默认实现是DefaultChannelPipeline,其构造方法如下: private final Channel channel ...
- Springboot中注解@Configuration源码分析
Springboot中注解@Configuration和@Component的区别 1.先说结论,@Configuration注解上面有@Component注解,所以@Component有的功能@Co ...
- Hadoop 中 IPC 的源码分析
最近开始看 Hadoop 的一些源码,展开hadoop的源码包,各个组件分得比较清楚,于是开始看一下 IPC 的一些源码. IPC模块,也就是进程间通信模块,如果是在不同的机器上,那就可以理解为 RP ...
- Java网络编程与NIO详解11:Tomcat中的Connector源码分析(NIO)
本文转载 https://www.javadoop.com 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.c ...
- JDK1.7 中的HashMap源码分析
一.源码地址: 源码地址:http://docs.oracle.com/javase/7/docs/api/ 二.数据结构 JDK1.7中采用数组+链表的形式,HashMap是一个Entry<K ...
随机推荐
- app内区域截图利用html2Canvals保存到手机 截屏 (html2Canvals2版本1.0.0)
html2canvas($(], {scale:,logging:false,useCORS:true}).then(function(canvas) { var dataUrl = canvas.t ...
- (爬虫)随机生成一个header
#!/usr/bin/env python #-*- coding: utf-8 -*- #__Author__: yunrui #__Version__: 1.0 #__Time__: 2019/1 ...
- INCA二次开发-INCACOM
1.INCA介绍 INCA是常用的汽车ECU测试和标定的,广泛应用于动力总成等领域.INCA提供了丰富的接口,供用户自动化.定制化.本公众号通过几篇文章,介绍下一些二次开发的方法,本篇介绍INCA-C ...
- Unity UGUI事件接口概述
UGUI 系统虽然提供了很多封装好的组件,但是要实现一些特定的功能还是显得非常有限,这时候就需要使用事件接口来完成UI功能的实现.比如我们想实现鼠标移动到图片上时自动显示图片的文字介绍,一般思路会想到 ...
- 最漂亮的Spring事务管理详解
SnailClimb 2018年05月21日阅读 7245 可能是最漂亮的Spring事务管理详解 Java面试通关手册(Java学习指南):github.com/Snailclimb/- 微信阅读地 ...
- 推荐算法之---FM算法;
一,FM算法: 1,逻辑回归上面进行了交叉特征.算法复杂度优化从O(n^3)->O(k*n^2)->O(k*n). 2,本质:每个特征都有一个k维的向量,代表的是每个特征都有k个不可告人的 ...
- android nfc功能开发
链接:Android NFC开发详细总结 https://blog.csdn.net/zhwadezh/article/details/79111348 链接2:Android NFC功能 简单实 ...
- flex一行显示两列(CSS)
外层display: flex;flex-wrap: wrap; 里层 width:49%
- 5 asyncio 梨视频
# 如何提升requests模块爬取数据的效率?- 多进程或多线程(不建议) 太耗费资源- 线程池或进程池(适当使用) - 单线程 + 异步协程(推荐) # 线程池使用案例 # 梨视频 下载作业 im ...
- app内嵌 h5页面 再滑动的时候 触发击穿底下的一些touchstart事件
我们的目的是再滑动的时候 不要触发到touchstart事件. // 再滑动的时候无法点开视频 var is_scroll_start,is_scroll_end; $(window).on({ 't ...