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小记(一)的更多相关文章

  1. 小记--------sparksql和DataFrame的小小案例java、scala版本

    sparksql是spark中的一个模块,主要用于进行结构化数据的处理,他提供的最核心的编程抽象,就是DataFrame.同时,sparksql还可以作为分布式的sql查询引擎. 最最重要的功能就是从 ...

  2. Scala 中的函数式编程基础(三)

    主要来自 Scala 语言发明人 Martin Odersky 教授的 Coursera 课程 <Functional Programming Principles in Scala>. ...

  3. jdk1.8源码包下载并导入到开发环境下助推高质量代码(Eclipse、MyEclipse和Scala IDEA for Eclipse皆适用)(图文详解)

    不多说,直接上干货! jdk1.8 源码, Linux的同学可以用的上. 由于源码JDK是前版本的超集, 所以1.4, 1.5, 1.6, 1.7都可以用的上.     其实大家安装的jdk路径下,这 ...

  4. [原]Paste.deploy 与 WSGI, keystone 小记

    Paste.deploy 与 WSGI, keystone 小记 名词解释: Paste.deploy 是一个WSGI工具包,用于更方便的管理WSGI应用, 可以通过配置文件,将WSGI应用加载起来. ...

  5. jdb调试scala代码的简单介绍

    在linux调试C/C++的代码需要通过gdb,调试java代码呢?那就需要用到jdb工具了.关于jdb的用法在网上大家都可以找到相应的文章,但是对scala进行调试的就比较少了.其实调试的大致流程都 ...

  6. scala练习题1 基础知识

    1, 在scala REPL中输入3. 然后按下tab键,有哪些方法可以被调用? 24个方法可以被调用, 8个基本类型: 基本的操作符, 等:     2,在scala REPL中,计算3的平方根,然 ...

  7. 牛顿法求平方根 scala

    你任说1个整数x,我任猜它的平方根为y,如果不对或精度不够准确,那我令y = (y+x/y)/2.如此循环反复下去,y就会无限逼近x的平方根.scala代码牛顿智商太高了println( sqr(10 ...

  8. Scala集合和Java集合对应转换关系

    作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 用Scala编码的时候,经常会遇到scala集合和Java集合互相转换的case,特意mark一 ...

  9. Scala化规则引擎

    1. 引言 什么是规则引擎 一个业务规则包含一组条件和在此条件下执行的操作,它们表示业务规则应用程序的一段业务逻辑.业务规则通常应该由业务分析人员和策略管理者开发和修改,但有些复杂的业务规则也可以由技 ...

随机推荐

  1. 持续部署入门:基于 Kubernetes 实现滚动发布

    前言 软件世界比以往任何时候都更快.为了保持竞争力,需要尽快推出新的软件版本,而不会中断活跃用户访问,影响用户体验.越来越多企业已将其应用迁移到 Kubernetes. 在 Kubernetes 中有 ...

  2. 小程序开发-组件navigator导航篇

    navigator 页面链接 navigator的open-type属性 可选值 navigate.redirect.switchTab,对应于wx.navigateTo.wx.redirectTo. ...

  3. TIKTOK 美国制裁

    今天在B站上看了沈教授和李自然说关于TIKTOK对于美国的声明采取的做法的一些看法.其实对于他们的看法,我觉得没有对错之分.正像两个新发的观点,在没有得到历史的验证前,谁也不会承认谁错了.更多的是两个 ...

  4. CSS特效(一)

    三角形 <!-- log --> <div class="tri"></div> <style> .tri { width: 0; ...

  5. VS调试出现解决 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题

  6. Druid连接池配置全攻略

    Druid是阿里开源出来的数据库连接池,性能非常好,还自带日志监控. 它的DataSource类为:com.alibaba.druid.pool.DruidDataSource. 由于使用的yaml格 ...

  7. 学习 | css3基本动画之demo篇

    移动端使用的框架是zepto,但是zepto的内置对象没有传统的animate这个方法,效果都是需要css3来实现的,zepto也不支持fadeIn和fadeOut等一些基本的动画,基于这一现状,我自 ...

  8. 如何成为一位优秀的ScrumMaster

    嗨,大家好,我是叶子 背景介绍 目标:为了能更好的适应快速变化的需求和不确定的未来. 部门包含岗位:部门负责人.项目经理.产品经理.开发团队(开发人员.测试人员) 那么这种情况下,我们想转型Scrum ...

  9. spring boot之AOP

    首先,aop是面向对象切面,嗯,就是说不面向静态方法,我做测试demo的时候controller方法有个加了static,尴尬的是就用了那个方法测,检查了几遍配置... 参看这篇文章https://m ...

  10. python3 函数的参数

    函数的参数 形参(函数定义时) + 实参(函数调用时) 形参:形式参数 在函数的定义处定义的参数,比如def func(参数1, 参数2, 参数3...) 普通参数(位置参数), 默认参数,普通收集参 ...