Scala小记(一)
Scala小记----初识Scala
一,什么是Scale?
Scala是一门面向对象的,使用JVM运行的函数式编程语言,(函数式编程语言:指的就是那些将方法或者说是函数来作为参数
进行传递的编程语言)。Scala默认引入的包有三个(java.long._ , scala._ , Predef._ ) 注:这三个包下main的内容皆
可以直接使用。
1.1函数式编程的特点?
1.1.1 函数是“一等公民”
(first class)指的是函数与其他数据类型一样,处于一个相互平等的地位,可以赋值给其他变量,亦可以作为参数来传递给另一个
函数,或者说是作为别的函数的返回值。
1.1.2 只用表达式,不用语句
表达式(expression)是一个单纯的运算过程,总是会有返回值;语句(statement)是执行某种操作,没有返回值。函数式编程的
要求就是:值使用表达式,不使用语句。每一步都是作为单纯的运算来做的,而且都有返回值。函数式编程的开发动机就是处理
运算(computation),不考虑系统的读写IO(尽量少)。
1.1.3 没有“副作用”
意味着函数要保持一个独立性,所有的功能就是返回一个新的值,没有其他行为,尤其是不能修改其他的变量的值。
1.1.4 不修改状态
在其他语言中,变量往往保存状态,函数式的编程全局变量不能保存状态,状态一般保存再参数中。
1.1.5 引用透明
指的是函数的运行不依赖外部的变量,只依赖输入参数,任何的时候只要参数相同,引用函数所得到的返回值就总是相同的。
1.2 什么是闭包?
闭包是一个函数,返回值依赖于声明在函数外部的一个或着多个变量。
闭包通常来讲可以简单的认为是可以访问一个函数里面局部变量的另外一个函数(可以引用外部的变量)
1.3 Scala代码块?变量?常量?
1.3.1 Scala的代码块?
- 包含在{}中间的代码称之为代码块
- 代码块的最后一行就是这个代码块的返回值(并且无需加return关键字)
1.3.2 Scala的变量和常量?
- Scala的变量和常量的定义需要有一个初始值,如果我们不知道初始值是什么的话,我们可以使用下划线(占位符)来替代
- 只有抽象类可以定位无初始值的变量和常量
Scala小记(一)的更多相关文章
- 小记--------sparksql和DataFrame的小小案例java、scala版本
sparksql是spark中的一个模块,主要用于进行结构化数据的处理,他提供的最核心的编程抽象,就是DataFrame.同时,sparksql还可以作为分布式的sql查询引擎. 最最重要的功能就是从 ...
- Scala 中的函数式编程基础(三)
主要来自 Scala 语言发明人 Martin Odersky 教授的 Coursera 课程 <Functional Programming Principles in Scala>. ...
- jdk1.8源码包下载并导入到开发环境下助推高质量代码(Eclipse、MyEclipse和Scala IDEA for Eclipse皆适用)(图文详解)
不多说,直接上干货! jdk1.8 源码, Linux的同学可以用的上. 由于源码JDK是前版本的超集, 所以1.4, 1.5, 1.6, 1.7都可以用的上. 其实大家安装的jdk路径下,这 ...
- [原]Paste.deploy 与 WSGI, keystone 小记
Paste.deploy 与 WSGI, keystone 小记 名词解释: Paste.deploy 是一个WSGI工具包,用于更方便的管理WSGI应用, 可以通过配置文件,将WSGI应用加载起来. ...
- jdb调试scala代码的简单介绍
在linux调试C/C++的代码需要通过gdb,调试java代码呢?那就需要用到jdb工具了.关于jdb的用法在网上大家都可以找到相应的文章,但是对scala进行调试的就比较少了.其实调试的大致流程都 ...
- scala练习题1 基础知识
1, 在scala REPL中输入3. 然后按下tab键,有哪些方法可以被调用? 24个方法可以被调用, 8个基本类型: 基本的操作符, 等: 2,在scala REPL中,计算3的平方根,然 ...
- 牛顿法求平方根 scala
你任说1个整数x,我任猜它的平方根为y,如果不对或精度不够准确,那我令y = (y+x/y)/2.如此循环反复下去,y就会无限逼近x的平方根.scala代码牛顿智商太高了println( sqr(10 ...
- Scala集合和Java集合对应转换关系
作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 用Scala编码的时候,经常会遇到scala集合和Java集合互相转换的case,特意mark一 ...
- Scala化规则引擎
1. 引言 什么是规则引擎 一个业务规则包含一组条件和在此条件下执行的操作,它们表示业务规则应用程序的一段业务逻辑.业务规则通常应该由业务分析人员和策略管理者开发和修改,但有些复杂的业务规则也可以由技 ...
随机推荐
- 你不得不知的Java基础知识
本篇博客主要记录Java中面向对象的概念和Java语法的基础知识. 面向对象 什么是面向对象 面向对象是一种优秀的软件设计思想,是相对于面向过程.面向切面等设计思想的一种软件设计理念.它的核心思想是运 ...
- 用于测试XmlAnalyzer 1.00版的八个测试用例
XmlAnalyzer 工程目的:将XML的属性和子节点按字母序排列,然后整形输出: 08. 原文=<project xmlns="http://maven.apache.org/PO ...
- Spring Boot与日志
目录 1.日志框架 2.市面上的日志框架 2.1 下表行间无任何对应关系 2.2 日志门面:slf4j 2.3 日志实现:logback 2.4 Spring Boot怎么做的呢? 3.slf4j的使 ...
- js拖拽原理及简单实现(渣渣自学)
第一步 首先简单分析下需求吧,我们就是想实现鼠标拖拽带颜色的方块时,让方块停留在鼠标松开的位置,需要计算的就是拖拽前的坐标和拖拽后的坐标,鼠标移动后相对于原位置的偏移量=目标元素的偏移量,根据这个等式 ...
- Vue 侦听器 watch
1. 侦听器 watch Vue 提供了一种更通用的方式来观察和响应 Vue 实例上的数据变动:侦听属性 当属性发生改变时,自动触发属性对应的侦听器. 当需要在数据变化时执行异步或开销较大的操作时,这 ...
- iptables防火墙说明即使用
防火墙是架设在公网和私网之间的服务器,隔离公网和私网,保护私网. RHEL7默认使用firewalld作为防火墙. 但firewalld底层还是调用包过滤防火墙iptables #systemctl ...
- 大写的服,看完这篇你还不懂RocketMQ算我输
目录 RocketMQ介绍 RocketMQ概念 为什么要用RocketMQ? 异步解耦 削峰填谷 分布式事务最终一致性 数据分发 RocketMQ架构 RocketMQ消息类型 普通消息 顺序消息 ...
- PHP程序十点未来的建议
1. Composer 第一点就要提 Composer ,自从 Composer 出现后,PHP 的依赖管理可以变得非常简单.程序内依赖一些类库和框架,直接使用 Composer 引入即可,通过使用 ...
- [LeetCode]1114. 按序打印(并发)
####题目 我们提供了一个类: public class Foo { public void one() { print("one"); } public void tw ...
- 使用Excel设计fastreport报表
最近做项目遇到一些报表设计的问题.项目的报表使用 Fast Report,然而该控件调整报表格式比较繁琐,有时候调整某一栏的宽度,整个标题栏都需要调整,且调整以后 还不一定能对齐.客户的很多报表都是基 ...