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关键字声明常量.由于常量值从不变化,所以常量总是被视为类型定义的一部分 ...
随机推荐
- 如何用 Retrofit 2 在安卓上实现 HTTP 访问?
最近,笔者对安卓开发的兴趣愈发浓厚,而且不断尝试了许多传闻很棒的开发库 -- 大部分也真的很不错.于是打算写一个系列文章,介绍使用这些让人惊叹的库建立安卓示例应用的实践.这样,读者可以自行判断,这些库 ...
- 【形式化方法:VDM++系列】1.前言
1.前言 今天开始上课学习软件需求分析与VDM++,经过一节课的学习,我又增长了见识. 软件需求工程在软件工程中处于十分核心的地位:需求分析的好坏直接决定软件工程的成败.这一点是我之前对需求工程的理解 ...
- Codeforces Round #215 (Div. 1)
A Sereja and Algorithm 题意:给定有x,y,z组成的字符串,每次询问某一段s[l, r]能否变成变成zyxzyx的循环体. 分析: 分析每一段x,y,z数目是否满足构成循环体,当 ...
- UVALive - 4287 Proving Equivalences
给定n个命题之间的已经证明的关系如 a b表示已经证明蕴含式a→b,要求还需要再作多少次证明使得所有的命题都是等价的.将每个命题看成一个点,已经证明的命题之间连一条边,问题转化为添加多少条单向边使得图 ...
- [转贴]使用CryptoAPI解析X509证书和P12证书
原文在 http://bbs.pediy.com/archive/index.php?t-97663.html,但是觉得这篇文章非常好,我抄下来作我笔记用 一.解析X509证书 1.从磁盘上的证书文件 ...
- Android EditText多行显示及所有属性
android:id="@+id/editSms" android:layout_width="fill_parent" android:layout_heig ...
- Android 滑动菜单SlidingMenu
首先我们看下面视图: 这种效果大家都不陌生,网上好多都说是仿人人网的,估计人家牛逼出来的早吧,我也参考了一一些例子,实现起来有三种方法,我下面简单介绍下: 方法一:其实就是对GestureDetect ...
- c while 循环
c代码: #include <stdio.h> int main(void){ unsigned long sum=1UL; unsigned int j=1U; unsigned ; p ...
- XSD标准架构-----<xsd:element> 元素详解
声明一个元素. <element abstract = Boolean : false block = (#all | List of (extension | restriction ...
- hdu4681String
http://acm.hdu.edu.cn/showproblem.php?pid=4681 枚举A串和B串包含C串的区间 枚举区间端点算左右两端最长公共子序 #include <iostre ...