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语法规则的包结构

转载于:https://www.cnblogs.com/Vowzhou/p/10712741.html

Scala简介、安装、函数、面向对象相关推荐

  1. Spark基础学习笔记08:Scala简介与安装

    文章目录 零.本讲学习目标 一.Scala简介 (一)Scala概述 (二)函数式编程 (三)Scala特性 1.一切都是对象 2.一切都是函数 3.一切都是表达式 (四)在线运行Scala 二.选择 ...

  2. Scala简介与安装

    目录 一.Scala简介 (一)Scala概述 (二)函数式编程 (三)Scala特性 1.一切都是对象 2.一切都是函数 3.一切都是表达式 (四)在线运行Scala 二.选择Scala版本 三.W ...

  3. Scala 简介 [摘自 Scala程序设计 ]

    Scala 简介 1.1 为什么选择Scala Scala 是一门满足现代软件工程师需求的语言:它是一门静态类型语言,支持混合范式:它也是一门运行在 JVM 之上的语言,语法简洁.优雅.灵活.Scal ...

  4. 2021年大数据常用语言Scala(一):Scala简介

    目录 一.Scala简介 为什么使用scala Scala对比Java 案例 一.Scala简介 scala是运行在JVM上的多范式编程语言,同时支持面向对象和面向函数编程 多范式:就是包含多种编程思 ...

  5. Scala简介以及基本语法(一)

    文章目录 Scala简介 为什么要使用Scala? Scala vs Java 安装JDK以及SDK IDEA安装Scala插件 第一个Scala程序 Scala基本语法 声明变量 使用类型推断来定义 ...

  6. 大数据必学语言Scala(一):Scala简介

    文章目录 一.Scala简介 为什么使用scala Scala对比Java 案例 一.Scala简介 scala是运行在JVM上的多范式编程语言,同时支持面向对象和面向函数编程 多范式:就是包含多种编 ...

  7. Spark 第二讲 Scala简介

    一. Scala 简介 Scala 是 Scalable Language 的简写,是一门多范式的编程语言,由联邦理工学院洛桑(EPFL)的 Martin Odersky 于2001年基于 Funne ...

  8. 《Scala入坑笔记》一、Scala简介

    Scala 是 Scalable Language 的简写,网上没有发现谁问 Scala 怎么读,你是按 Scalable 的发音读作 ['skeɪlə] 还是喜欢读作斯卡拉? Scala 是一门多范 ...

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

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

  10. linux系统发送信号的系统调用是,linux系统编程之信号:信号发送函数sigqueue和信号安装函数sigaction...

    信号发送函数sigqueue和信号安装函数sigaction sigaction函数用于改变进程接收到特定信号后的行为. sigqueue()是比较新的发送信号系统调用,主要是针对实时信号提出的(当然 ...

最新文章

  1. ubuntu 14.04服务器上使用nginx搭建wordpress博客详解
  2. android 计算运动速度,android – 计算参考真北的加速度
  3. Spring 3 MVC and XML example
  4. python3文件的编码类型是什么_Python3编码类型有哪些?怎么转换?
  5. xss img onerror java_java后台防止XSS的脚本攻击
  6. C#从数据库导出数据到CSV
  7. cmd命令不识别exp_GRAT2:一款功能强大的命令amp;控制(C2)工具
  8. kaggle比赛语言java_Kaggle调查:2018年数据科学家最常用(和最推荐)的编程语言榜单...
  9. python 导入的nan怎么解决_用Python处理了数据还要导入Excel做图表?直接Python做漂亮图表...
  10. 自学通过CISSP备考心得
  11. 数学表达式Round2
  12. SQL求同比增长率(系列1)
  13. 自定义控件之——封装控件(一)
  14. 记一次docker进不去容器的经历
  15. UE4 UE4使用小技巧——使用上帝视角运行游戏
  16. 单周期CPU设计【Verilog】
  17. JS中的跨域问题及解决办法汇总
  18. led灯珠型号及使用参数
  19. 图书借阅管理系统实现
  20. Moodle专题网站链接

热门文章

  1. 莫比乌斯反演 BZOJ 2820
  2. .net 面试题 (1)
  3. 【OpenCV学习笔记】【函数学习】十一(读入图像﹑显示图像和保存图像)
  4. 在Linux(Ubuntu)下编写编译C语言
  5. GIS案例练习-----------第七天
  6. 第五章——Pytorch中常用的工具
  7. python_dataframe总结1
  8. “AI+遥感”产品研究现状
  9. 在linux中装多个mysql 服务(亲测有效)
  10. Flink State - Backend Improvements and Evolution in 2021