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. 引言 什么是规则引擎 一个业务规则包含一组条件和在此条件下执行的操作,它们表示业务规则应用程序的一段业务逻辑.业务规则通常应该由业务分析人员和策略管理者开发和修改,但有些复杂的业务规则也可以由技 ...
随机推荐
- tp5下的文件上传与下载类
class FieldInterfun extends Controller { /** * [upload 上传文件] * @param [type] $file [description] * @ ...
- Ubuntu 20.04 手动安装 sublime_text 并建立搜索栏图标(解决 Ubuntu 20.04 桌面图标无法双击打开问题)
下载sublime_text_3离线程序包 wget https://download.sublimetext.com/sublime_text_3_build_3211_x64.tar.bz2 #x ...
- 剑指 Offer 42. 连续子数组的最大和
题目描述 输入一个整型数组,数组中的一个或连续多个整数组成一个子数组.求所有子数组的和的最大值. 要求时间复杂度为\(O(n)\). 示例1: 输入: nums = [-2,1,-3,4,-1,2,1 ...
- Eclipse插件打开编辑器
今天终于可以闲一天,想来想去就乱写点东西吧,说不定对有些新人有点帮助呢-_- 用Eclipse API的方式来打开编辑器,可能对任何一个插件开发者都不是很陌生的操作了.但是,还是建议你忍着看一下,全当 ...
- 本地ubuntu 往阿里云ubuntu服务器传文件
起因 今天在本地ubuntu搭环境,弄好之后需要把本地的文件传到服务器上去... 本想着用xftp直接拖过去,结果连接不上,可能是我太菜了吧,只好百度找方法··· 这里就简单的记录一下吧~ 步骤 sc ...
- leetcode刷题-90子集 II
题目 给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重复的子集. 示例: 输入: [1,2,2]输出:[ [2], [1], [1,2,2], [ ...
- nodeJS 下载与安装,环境配置
1.什么是nodeJs: 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. Node.js是一 ...
- python格式化输出当前时间
import time def get_now_time(): now_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.tim ...
- SpringBoot框架:通过AOP和自定义注解完成druid连接池的动态数据源切换(三)
一.引入依赖 引入数据库连接池的依赖--druid和面向切面编程的依赖--aop,如下所示: <!-- druid --> <dependency> <groupId&g ...
- 003.当在windows终端输入ipconfig时,显示不是内部或外部命令,也不是可运行的程序或批处理文件
当在windows终端输入ipconfig时,显示不是内部或外部命令,也不是可运行的程序或批处理文件,这是环境变量的问题: 右键我的电脑→→→属性→→→高级系统设置→→→(高级)环境变量 在弹出的窗口 ...