Scala基础(1)
Scala基础语法
声明与定义:
val,常量声明 val x:T(把x声明成一个类型为T的常量) x是变量的名字,T是变量的类型 val x:T=e x是常量,值是不可以改变的
var,变量声明 var x:T (和val一样) var x:T=e x是变量,值是可以改变的
类型省略(默认类型) val x=e var x=e
声明省略(连续声明) val x1,x2,x3 等价于 val x1; val x2; val x3 var x1,x2,x3:T=e 等价于 var xn:T=e
def,函数声明 def abc(xn:T):T*=e def定义函数,abc函数名,xn参数,T参数类型,后面的T返回值类型
无参函数 def adder()=e
type类型声明
class,类声明
object,对象声明
Scala有哪些类型?
1.数值型:Int,Long,Short,Byte
2.浮点型:Double,Float
3.布尔型:Boolean
4.字符型:char , String Char序列
除了String归于java.lang包外,其他基本类型均是scala包的成员
Int等基本类型的全名是scala.Int,但是包scala同java.long的所有成员都能自动引用,因为能再实际使用时候简化
Scala操作符运算:
使用中缀数学操作符+、-、*、/、%并产生对应的数值结果
使用比较操作符<、>、>=、=<并产生布尔值结果
使用逻辑操作符&&、||并产生布尔值结果
使用对等操作符==、!=并产生布尔值结果
使用位操作符&、|、^、~并产生数值结果
实际上,ScaLa没有任何操作符,所有的操作符运算都是对方法(函数)的调用
如1+2实际上是调用了.+() 这个方法1.+(2)
在具体的调用中,调用+实际上包含了+的各种类型参数的重载,而无需额外定义 1+2就是两个Int类型相加,1+1.2就是Int+Double
操作符具有优先级 1+5*4=21 (1+5)*4=24
操作符优先级一般如下:
特殊字符 > */% > +- > : > =!> <> > & > ^ > | > 其他字母 > 赋值操作符
scala支持如“***”“+-+”之类的操作符重载,考虑其优先级一般以第一个符号为主
值得注意的是,形如“*=”的操作符重载,会被认为是赋值操作符而具有最低的优先级
m *= n+5 等价于 m *= (n+5)
语句结束:
Scala是基于行的语言,分号和换行均可作为语句的结束
判定换行是否为语句的结束有以下规则:
换行前的符号是一个语句的结束:常量、标识符、保留字及其他分隔符
换行后的符号是一个语句的开始:除部分分隔符及保留字外的所有符号
符号处在一个允许多语句的区域:Scala源文件中,匹配的{与}间
换行不作为语句的结束:
匹配的(与)之间,[与]之间
XML模式下的区域
case符号及匹配的=>符号之间
if、while、for、type是允许跨两行的合法语句
通常的Scala编写规范:
代码格式化,不同段落、不同文件的Scala应保持相同的语法格式
层次间缩进,避免长语句
合理的命名;
短作用域短名字,长作用域长名字
通用缩写,词意与目的相近,莫要使用add来命名一个做减法的函数
避免不同用途时重用名字
避免用反引号声明保留字
有返回值的方法(函数)用可描述的名字
利用{}创建复合表达式
及时注释
Scala基础(1)的更多相关文章
- 【Scala学习之一】 Scala基础语法
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk1.8 scala-2.10.4(依赖jdk1.8) spark ...
- Scala学习(一)--Scala基础学习
Scala基础学习 摘要: 在篇主要内容:如何把Scala当做工业级的便携计算器使用,如何用Scala处理数字以及其他算术操作.在这个过程中,我们将介绍一系列重要的Scala概念和惯用法.同时你还将学 ...
- scala 基础知识总结
在最开始处引入 log 相关的 包 import org.apache.log4j.{Logger,Level} 在需要屏蔽日志输出的地方加上这两行代码 // 屏蔽不必要的日志显示在终端上 Logge ...
- 1.scala基础语法总结
Scala基础语法总结:Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ; 是可选的.如果一行里写多个语句那么分号是需要的 val s = "菜鸟教程"; pr ...
- Scala 基础(8)—— 占位符_和部分应用函数
1. 占位符 _ 针对 Scala 基础(7)—— 函数字面量和一等函数 中最后提到的,关于 filter 函数字面量的精简写法,可以使用占位符 _ 来代替. 占位符_,用来表示一个或者多个参数.(这 ...
- Scala 基础(7)—— 函数字面量和一等函数
1. 函数字面量 在 Scala 基础(3)—— 基础类型和基础操作 中提到了函数字面量,这里具体解释函数字面量的语法. 下面展示一个具体的函数字面量,它由三部分组成: (x: Int, y: Int ...
- Scala 基础(5)—— 构建函数式对象
有了 Scala 基础(4)—— 类和对象 的前提,现在就可以来构建一个基于 Scala 的函数式对象. 下面开始构造一个有理数对象 Rational. 1. 主构造方法和辅助构造方法 对于每一个类的 ...
- Scala基础知识[一]
摘要:在Scala 是 Scalable Language 的简写,是一门多范式(multi-paradigm)的编程语言.设计初衷是要集成面向对象编程和函数式编程的各种特性.Scala 运行在Jav ...
- Scala基础简述
* Scala基础简述 本文章作为Scala快速学习的教程,前提环境是:我假设在此之前,你已经学会了Java编程语言,并且我们以随学随用为目标(在此不会深度挖掘探讨Scala更高级层次的知识).其中语 ...
随机推荐
- Web Api跨域访问配置及调用示例
1.Web Api跨域访问配置. 在Web.config中的system.webServer内添加以下代码: <httpProtocol> <customHeaders> &l ...
- You have new mail in /var/spool/mail/root 解决烦琐提示的方法
今天写定时任务时,出现奇怪的提示,有的时候每敲一下回车,也出现奇怪的提示 You have new mail in /var/spool/mail/root 阿西吧........表示很烦...究竟是 ...
- 【汇编】SI DI 的用法
一.汇编语言中,为什么SI和DI不能同时使用汇编 其实你可以想一下,这两个寄存器的意思,SI源变址寄存器,DI目地变址寄存器,既然是变址寄存器,那么他们肯定是在某个地址的基础上进行偏移变化,由此我们就 ...
- [ML学习笔记] 决策树与随机森林(Decision Tree&Random Forest)
[ML学习笔记] 决策树与随机森林(Decision Tree&Random Forest) 决策树 决策树算法以树状结构表示数据分类的结果.每个决策点实现一个具有离散输出的测试函数,记为分支 ...
- bower包管理工具
安装: npm install bower -g (全局安装) 验证: bower --version 指令( 以vue为例 ): 1. bower info vue 查看 ...
- 2.HBase In Action 第一章-HBase简介(1.1数据管理系统:快速学习)
Relational database systems have been around for a few decades and have been hugely successful in so ...
- AtCoder Regular Contest
一句话题解 因为上篇AGC的写的有点长……估计这篇也短不了所以放个一句话题解方便查阅啥的吧QwQ 具体的题意代码题解还是往下翻…… ARC 058 D:简单容斥计数. E:用二进制表示放的数字,然后状 ...
- 记一次MyBatis的错误
错误信息:java.lang.StackOverflowError 关于这个错误的深度解析,大家可以参考这篇博文,比较详细:https://blog.csdn.net/zc375039901/arti ...
- MediaPlayer: Couldn't open /storage/emulated/0/kgmusic/download/独家记忆.mp3: java.io.FileNotFoundExcept
写了一个音乐播放器,播放的时候,会出现这样的问题:比如说我点击第三首歌曲,结果没有播放第三首歌曲,而直接播放了第四首歌曲.看了一下日志.发现报错:MediaPlayer: Couldn't open ...
- IN2REG group 的时序分析
针对 IN2REG 的 timing group,其 timing 模型是假设 input pin 外面有一个虚拟的reg(如图中的 reg1),这个虚拟reg的 clock 是 virtual cl ...