Scala是一门以java虚拟机(JVM)为目标运行环境并将面向对象函数式编程的最佳特性结合在一起的静态类型编程语言

scala命令行窗口,我们称之为REPL,是指:Read->Evaluate->Print->Loop,也称之为交互式解释器。类似于MySQL的默认客户端工具在命令行窗口中输入scala指令代码时,解释器

会读取指令代码并计算(Evaluation)对应的值,然后将结果打印(Print)出来,接着循环等待用户输入r指令(Loop)。

从技术上讲,这里其实并不是一个解释器,而是指令代码被快速的编译成Java字节码并被JVM加载执行。最终将执行结果输出到命令行中。


"函数式编程"是一种"编程范式"(programming paradigm),也就是如何编写程序的方法论。

它属于"结构化编程"的一种,主要思想是把运算过程尽量写成一系列嵌套的函数调用。

函数编程语言最重要的基础是λ演算(lambda calculus),而且λ演算的函数可以接受函数当作输入(参数)和输出(返回值)。

函数式编程中,最重要的就是函数。那

什么是函数?

编程语言中所谓的函数就是为了实现特定逻辑而封装的功能代码,如果逻辑中需要外置的条件进行判断或处理,那么函数可以增加参数。

函数是:

第一等公民,表示在函数式编程语言中,函数与其他数据类型一样,处于平等地位,可以赋值给其他变量,也可以作为参数,传入另一个函数,或者作为别的函数的返回值。

纯函数:

函数要保持独立,所有功能就是返回一个新的值,没有其他行为,尤其是不得修改外部变量的值。

引用透明:

在函数式编程中,引用透明指的是运行函数的时候,函数的每一个步骤都不会牵连到函数的外部变量或状态,而是只依赖于函数输入的参数,相同的参数输入总会得到相同的函数返回值(如MD5加密算法)。而在其他类型的语言中,函数的返回值不仅仅与函数的参数传入有关,也与当前的系统状态有关。在不同的系统状态的情况下,函数的返回值不同。


面向对象:

                    Scala语言来自于Java,所以天生就是面向对象的语言

类:

  scala语法中,类并不声明为public,一个Scala源文件可以包含多个类。所有这些类都具有公有可见性。所以这里的修饰符在后面扩展时再介绍

对象:  

   val 变量 [:类型]  = new 类型();

   val user : User = new User();

   scala在声明对象变量时,可以根据创建对象的类型自动推断,所以类型声明可以省略

属性:

  private var 属性名称 [:类型] = 属性值

  Scala中声明一个属性,必须有初始化值,然后根据初始化数据的类型自动推断,属性类型可以省略,如果初始化的值设定为null,也可以使用符号_(下划线)代替

  Scala为了访问一致性,所以并不推荐由开发人员自行定义setter/getter方法

方法:

   def 方法名(参数列表) [:返回值类型] = {方法体}

  Scala中一般将对象中的函数称之为方法,将非对象中的函数称之为函数。声明规则请参考函数式编程中的函数声明

  静态方法:     

    Scala中伴生对象采用object关键字声明,伴生对象中声明的全是“静态”内容,可以通过伴生对象名称直接调用。

     伴生对象对应的类称之为伴生类,伴生类和伴生对象应该在同一个源码文件中

    从语法角度来讲,所谓的伴生对象其实就是类的静态方法和成员的集合

    从技术角度来讲,所谓的伴生对象在编译时,会将对应的代码以静态的方式生成到类的字节码中

包:

   package 包名

  scala语言也可以使用包管理类

  scala 包名和源码实际的存储位置没有关系

  从技术角度来讲,Scala的编译器会将Scala中的包编译成符合Java语法规则的包结构

Scala简介、安装、函数、面向对象的更多相关文章

  1. Scala: 简介和安装

    http://blog.csdn.net/pipisorry/article/details/52902117 Note: lz只是稍微学学,能看懂就行,不深入.适合scala小白. Scala简介 ...

  2. 2019/2/23Scala学习开始(Scala简介)

    Scala简介    Scala是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性. Scala运行在Java虚拟机上,并兼容现有的Java程序 ...

  3. Scala 学习之路(一)—— Scala简介及开发环境配置

    一.Scala简介 1.1 概念 Scala全称为Scalable Language,即“可伸缩的语言”,之所以这样命名,是因为它的设计目标是希望伴随着用户的需求一起成长.Scala是一门综合了面向对 ...

  4. Scala 系列(一)—— Scala 简介及开发环境配置

    一.Scala简介 1.1 概念 Scala 全称为 Scalable Language,即"可伸缩的语言",之所以这样命名,是因为它的设计目标是希望伴随着用户的需求一起成长.Sc ...

  5. Scala简介及基础语法

    一.scala简介 官网:https://www.scala-lang.org/ Scala语言很强大,集成了面向对象和函数式编程的特点. 运行在JVM(jdk). 大数据中为什么学习scala? s ...

  6. Scala的安装,入门,学习,基础

    1:Scala的官方网址:http://www.scala-lang.org/ 推荐学习教程:http://www.runoob.com/scala/scala-tutorial.html Scala ...

  7. Scala - 快速学习01 - Scala简介

    Scala简介 Scala(Scalable Language)是一门多范式(multi-paradigm)编程语言,Scala的设计吸收借鉴了许多种编程语言的思想,具备面向对象编程.函数式编程等特性 ...

  8. Spark简介安装和简单例子

    Spark简介安装和简单例子 Spark简介 Spark是一种快速.通用.可扩展的大数据分析引擎,目前,Spark生态系统已经发展成为一个包含多个子项目的集合,其中包含SparkSQL.Spark S ...

  9. Scala中的函数

    Scala中的函数 提纲 1.Scala中的函数简介 2.Scala中的函数的各种写法 1.Scala中的函数简介 =================== Scala是函数式编程和面向对象式编程的混合 ...

  10. Scala函数式编程(三) scala集合和函数

    前情提要: scala函数式编程(二) scala基础语法介绍 scala函数式编程(二) scala基础语法介绍 前面已经稍微介绍了scala的常用语法以及面向对象的一些简要知识,这次是补充上一章的 ...

随机推荐

  1. Linux查看设备命令

    系统 # uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinfo # 查看CPU信息 # ho ...

  2. json2mysql

    import json import psycopg2 import sys conn = psycopg2.connect(dbname='dev', host='127.0.0.1', port= ...

  3. Pop Star 1.2.5

    原文链接https://www.cnblogs.com/zhouzhendong/p/Pop-Star.html 是VB写的. 年代久远,代码太丑,原码不公开. 下载链接 仅支持Windows,需要解 ...

  4. UOJ#201. 【CTSC2016】单调上升路径 构造

    原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ201.html 题解 首先把题目里面的提示抄过来: 结论:假设带权无向图 G 有 100 个节点 1000 ...

  5. HDU 4283 You Are the One 【区间DP】

    <题目链接> 题目大意: 有$n$个人排成一排要上台表演,每个人有一个屌丝值$pi$.第i个上台表演的人,他的不满意度为$(i-1)*p_i$.现在有一个类似于栈的黑屋子,你可以让某些人进 ...

  6. Aragorn's Story HDU - 3966 -树剖模板

    HDU - 3966 思路 :树链剖分就是可以把一个路径上的点映射成几段连续的区间上.这样对于连续的区间可以用线段树维护, 对于每一段连续的区间都可以通过top [ ]数组很快的找到这段连续区间的头. ...

  7. CSS3常用

    1.user-select新增特性,主流浏览器都支持 -webkit-user-select: none;  /* Chrome all / Safari all /opera15+*/  -moz- ...

  8. vue_过滤器: 对要显示的数据进行特定格式化后再显示

    过滤器 对要显示的数据进行特定格式化后再显示 并未改变原本的数据,可是产生新的对应的数据 <!DOCTYPE html> <html lang="en"> ...

  9. VMware workstation --虚拟机静态ip设置

    背景介绍 我在本机win10上安装VMware workstation软件,新建两台centos7虚拟机,最近在配服务,每天虚拟机重启后,ip总会变,服务配置文件又要修改,很麻烦,便需要将其ip由dh ...

  10. laravel5.5+vue+Element-ui+vux环境搭建(webpack+laravelMix)(转)

    本教程例子可到GitHub 上下载 Laravel5.5-Vue-Element-ui-Vux 1.laravel5.5安装,详情请参考: https://laravelacademy.org/pos ...