scala编程笔记(三)类,字段和方法
类,字段和方法
类是对象的蓝图,能够通过new来创建对象。在类的定义里能够有字段和方法。统称member
val还是var都是指向对象的变量(var定义的字段可又一次赋值),def定义方法,包括可运行代码
class ScalaSingleton {
var sum = 0;
}
这里定义类之后创建对象使用了。虽然这里是val,可是对象的变量是能够又一次赋值的
def main(args: Array[String]) {
val singleton = new ScalaSingleton()
println(singleton.sum)
singleton.sum = 5;
println(singleton.sum)
}
1,scala默认是public级别
2,scala的參数都是val类型,因此不可再方法体内又一次赋值
3。简洁性
先来个计算的 V1.0版的代码
class ScalaSingleton {
private var sum = 0;
def add(b: Byte): Unit = {
sum += b
}
def checksum(): Int = {
return ~(sum &0xff) + 1
}
}
1,在scala中假设没有不论什么显示的返回语句。将返回方法中最后一次计算得到的值
2,假如某个方法仅计算单个结果表达式,能够去掉花括号,如是scala代码就变成了这样
class ScalaSingleton {
private var sum = 0;
def add(b: Byte): Unit = sum += b
def checksum(): Int = return ~(sum &0xff) + 1
}
看起来仅占用了一行。另外
def add(b: Byte): Unit = sum += b
事实上能够去掉返回类型Unit 与等号 写成
def add(b: Byte) { sum += b}
这里来看看以下几个写法
def gUnit():Unit = {"Unit"}
println("gUnit():Unit = {\"Unit\"}:"+gUnit)
def gUnit1() {"Unit1"}
println("gUnit1() {\"Unit1\"}: " + gUnit1)
def gStr() = {"String"}
println("gStr() = {\"String\"}: "+gStr)
执行后返回值是这样子的
gUnit():Unit = {"Unit"}:()
gUnit1() {"Unit1"}: ()
gStr() = {"String"}: String
这里有一点就是:带有花括号的,可是无等号的会被专程Unit类型,从而得不到我们想要的返回类型,因此想要得到想要的返回 类型“=”等号是不能少的
分号判断
多行语句中,分毫是必须的,通常行尾能够觉得是一个分号,操作符通常应该是在行尾,而不能是行头
singleton
Scala中不能定义静态成员。取而代之定义单例对象
class 定义,注意包名差别
package com.luyee.scala.classpkg
class ScalaSingleton {
private var sum = 0;
def add(b: Byte): Unit = sum += b
def checksum(): Int = return ~(sum &0xff) + 1
}
Obj定义
package com.luyee.scala
import scala.collection.mutable.Map
object ScalaSingleton {
private val cache = Map[String, Int]()
def calculate(s: String):Int =
if(cache.contains(s)){
cache(s)
println("contains"+ cache)
cache(s)
}else{
println("else"+ cache)
val singleton = new com.luyee.scala.classpkg.ScalaSingleton()
for(c <- s)
singleton.add(c.toByte)
val cs = singleton.checksum()
cache += (s -> cs)
cs
}
def main(args: Array[String]) {
ScalaSingleton.calculate("2")
ScalaSingleton.calculate("2")
ScalaSingleton.calculate("2")
ScalaSingleton.calculate("2")
}
}
最后的输出结果:
not contains: Map()
contains: Map(2 -> -50)
contains: Map(2 -> -50)
contains: Map(2 -> -50)
scala编程笔记(三)类,字段和方法的更多相关文章
- Scala编程 笔记
date: 2019-08-07 11:15:00 updated: 2019-11-25 20:00:00 Scala编程 笔记 1. makeRDD 和 parallelize 生成 RDD de ...
- 响应式编程笔记三:一个简单的HTTP服务器
# 响应式编程笔记三:一个简单的HTTP服务器 本文我们将继续前面的学习,但将更多的注意力放在用例和编写实际能用的代码上面,而非基本的APIs学习. 我们会看到Reactive是一个有用的抽象 - 对 ...
- Scala 编程(三)基本类型和操作
一些基本类型 值类型 范围 Byte 8位有符号补码整数(-27-27-1) Short 16位有符号补码整数(-215-215-1) Int 32位有符号补码整数(-231-231-1) Long ...
- [Scala]Scala学习笔记四 类
1. 简单类与无参方法 class Person { var age = 0 // 必须初始化字段 def getAge() = age // 方法默认为公有的 } 备注 在Scala中,类并不声明为 ...
- C#-类 字段 属性 方法 特性
方法的签名 包括参数个数.参数类型.方法返回值 base和this关键字 1.使用base关键字,就可以使用父类中的字段.属性.方法 2.一旦父类中存在有参数的构造函数,那么子类就必须使用base来覆 ...
- Scala学习笔记三
scala变量理解: package com.cxy.scala object Hello { def main(args: Array[String]): Unit = { println(&quo ...
- Java学习笔记-File类的基本方法
要渐渐养成写博客的习惯-----> 前段时间看Mars的java中的I/O流没怎么懂,发现I/O流好难啊.今天重新看一遍其他教学,还有书籍,做些笔记,记录下每天的学习生活. File类的一些方法 ...
- Java SE学习笔记 --->高级类特性 ---> toString() 方法
概述: toString() 方法在面向对象当中十分常见,使用频率很高,和equals() 方法一样,也是Object类中定义的方法. jdk中 源码: java.lang.Object类中ToStr ...
- CLR via C# 读书笔记---常量、字段、方法和参数
常量 常量是值从不变化的符号.定义常量符号时,它的值必须能在编译时确定.确定后,编译器将唱两只保存在程序集元数据中.使用const关键字声明常量.由于常量值从不变化,所以常量总是被视为类型定义的一部分 ...
随机推荐
- PHP file_exists() 函数
定义和用法 file_exists() 函数检查文件或目录是否存在. 如果指定的文件或目录存在则返回 true,否则返回 false. 语法 file_exists(path) 参数 描述 path ...
- J2EE的十三种技术(规范)
J2EE的十三种技术(规范) Java数据库连接(JDBC) JDBC API以一个统一的方式访问各种数据库.与ODBC类似,JDBC将开发者和私有数据库之间的问题隔离开来.由于它建立在Java上, ...
- SQL Server中时间段查询和数据类型转换
不知道什么时候对数据独有情种,也许是因为所学专业的缘故,也许是在多年的工作中的亲身经历,无数据,很多事情干不了,数据精度不够,也很多事情干不了,有一次跟一个朋友开玩笑说,如果在写论文的时候,能有一份独 ...
- SQL Server 连接字符串和身份验证详解
SQL Server .NET Data Provider 连接字符串包含一个由一些属性名/值对组成的集合.每一个属性/值对都由分号隔开. PropertyName1=Value1; ...
- Subline Text快捷键
我经常使用的快捷键 Ctrl+A: 全选Ctrl+C: 复制 重复工作必备: Ctrl+D:选择单词,重复可增加选择下一个相同的单词Alt+F3:选择所有相同的词F3: 下一个Shift+F3:前一个 ...
- MS dos版本
1981年,MS-DOS 1.0发行,作为IBM PC的操作系统进行捆绑发售,支持16k内存及160k的5寸软盘.在硬件昂贵,操作系统基本属于送硬件奉送的年代,谁也没能想到,微软公司竟会从这个不起眼的 ...
- [转] 弱校ACM奋斗史
转载来自:http://blog.163.com/lx_zz0o0/blog/static/236205116201442604234538/ 弱校ACM奋斗史 2014-05-26 00:42:3 ...
- SQL Server 2008 数据库日志文件丢失处理方法
当数据库发生这种操作故障时,可以按如下操作步骤可解决此方法,打开数据库里的Sql 查询编辑器窗口,运行以下的命令. 1.修改数据库为紧急模式 ALTER DATABASE Zhangxing SET ...
- Xcode6 运行程序后,右侧Debug区域的Memory显示空白解决方法
http://chenyh-blog.com/%E8%9B%8B%E7%96%BC%E7%9A%84%E5%86%85%E5%AD%98-%E7%AC%AC%E4%B8%89%E7%AF%87-sdw ...
- Alexander Grothendieck去世了
Alexander Grothendieck (German: [ˈɡroːtn̩diːk]; French: [ɡʁɔtɛndik]; 28 March 1928 – 13 November 201 ...