设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 663|回复: 0

Scala入门笔记

[复制链接]

283

主题

1万

金钱

1万

积分

资深用户

发表于 2016-9-30 13:52:17 | 显示全部楼层 |阅读模式
作者 :Andrew_liu
Scala简介
  • Scala 是一门多范式的编程语言, 由Martin Odersky 于2001年基于Funnel的工作开始设计Scala并于2004年正式发布
  • Scala是一种纯面向对象的语言,每个值都是对象
  • Scala是一门多范式编程语言, 支持命令交互式, 函数式, 面向对象
  • 编译型高性能语言(静态)
  • 与Java无缝兼容, 可以使用任何Java库
代码风格
  • 函数和变量以小驼峰命名
  • 类和特质以大驼峰命名
  • 常量使用全大写命名
  • 一般使用两格缩进
  • Scala大部分情况可以忽略语句末尾的分号
Scala变量
Scala中尽量避免使用变量, 函数式编程的一个重要特性是不可变性(不可变变量没有副作用)
Scala是静态类型语言, 但是不需要显式的指明变量类型, Scala采用类型推断(Type Inference)。
Scala基本类型和操作
String和值类型Byte, Short, Int, Long, Float, Double, Char, Boolean
  • Scala的操作符不是特殊的语言语法, 任何方法都可以是操作符
  • 操作符分为前缀, 中缀, 后缀
  • Scala中所有操作符都是方法调用
  • 中缀操作符的两个操作数, 一个在左一个在右
  • 前缀操作符方法名在操作符上加了unary_前缀(+, -, !, ~)
  • 后缀操作符是不用点或括号调用的不带任何参数的方法
算术操作符: +, -, *, /, %
关系, 逻辑和位操作: >, <, >=, <=, ==, !=, &&, ||, &, |, ^, ~(反码)
位移操作: <<, >>, >>>(无符号右移)
Scala函数
函数式语言的一个主要特征是, 函数是第一类结构。
函数定义如下图:
2.1 scala 函数的基本构成
Unit 的结果类型指的是函数没有返回有用的值。
函数式对象
object和class的区别在于: object关键字创建一个单例对象。
  • 主构造器是类的唯一入口, 只有主构造器可以调用超类构造器
  • override关键字用于在重载父类的非抽象成员和成员函数
  • 同一个类内函数名相同而参数类型和个数不同的函数重载不需要override
继承和多态
  • 继承
  • 多态和动态绑定特性
动态绑定的特性即父类指针可以指向子类对象, 通过父类指针调用成员方法时, 会查找实际所指向的对象, 然后调用对象的内的对应方法
内建控制结构
表示式会产生一个值。
  • Scala中if是能返回值的表达式, Scala中没有三元操作符, 但通过if (condition) var1 else var2 可以实现三元操作符的功能
  • while和do-while被称为循环, 不产生有意义的结果
  • Scala中for语句非常强大, for {子句} yield {循环体}
  • match表达式可以产生值, match远强大与其他语言中的switch, 而且不需要显示的声明break
  • 变量范围: 大括号引入了一个新的范围, 内部变量会遮盖同名的外部变量
  • 占位符语法
  • 函数文本(匿名函数, 类似于python中的lamda)


柯里化(carry)
特质(trait)
特质就像带有具体方法的java接口;
特质和抽象类的区别: 抽象类主要用于有明确的父子继承关系的类树, 而特质可以用于任何类。
特质定义使用trait关键字
数据结构
  • Python中常用list, tuple, set, dict
  • Scala对应的数据结构为List, Tuple[X], Set, Map(HashMap)
  • Scala中默认为不可变对象, 操作会生成一个新的对象
  • Scala采用java平台的包机制
  • 使用import来进行引用
  • package com.zhihu.antispam
参考链接
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

快速回复 返回顶部 返回列表