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关键字声明常量.由于常量值从不变化,所以常量总是被视为类型定义的一部分 ...
随机推荐
- java对xml文件做增删改查
http://www.cnblogs.com/wangchenyang/archive/2011/08/23/2150530.html http://www.blogjava.net/weishuan ...
- SecureCRT 中文乱码问题
1.修改远程linux机器的配置 [root@rhel ~]#vi /etc/sysconfig/i18n 把LANG改成支持UTF-8的字符集 如: LANG=”zh_CN.UTF-8″ 或者是 L ...
- 服务器部署_nginx的host not found in upstream "tomcat_www.bojinne" 错误解决办法
今天修改了nginx.conf之后,nginx-t报错. 1. 网上多认为此错误需要修改/etc/hosts,添加该域名对应的ip 2. 我自己的解决方案是仔细核对 upstream 后面的字符 和 ...
- Universal Asynchronous Receiver/Transmitter
USART簡介與特性 NRZ標準資料格式(Mark/Space) 半雙工/全雙工 Synchronous 同步傳輸 CLOCK SKEW Asynchronous 非同步傳輸 半/全雙工.同步/非同步 ...
- sdut2536字母哥站队(dp)
简单DP 说是简单 还是推了好一会 推出来觉得好简单 保留当前i的最小值 dp[i] = min(dp[i],dp[j]+i-j-1) j<i #include <iostream> ...
- phpMyAdmin 'import.php'跨站脚本漏洞
漏洞版本: phpMyAdmin phpMyAdmin 3.4.9 phpMyAdmin phpMyAdmin 3.4.8 phpMyAdmin phpMyAdmin 3.4.6 phpMyAdmin ...
- google官方提供的编译android源码的环境初始化,Initializing a Build Environment
原文网址:http://source.android.com/source/initializing.html Initializing a Build Environment IN THIS DOC ...
- C#的排列组合类
C#的排列组合类 //-----------------------------------------------------------------------------//// 算法:排列组合 ...
- ArcGIS for Android 中MapView的地图背景设置
转自:http://blog.csdn.net/wozaifeiyang0/article/details/7535704 根据多方面测速,终于解决了一个蛋疼的问题,MapView的背景设置问题. 在 ...
- chart控件怎么使x轴标签全部显示出来
在vs2012中使用chart控件事,x轴的标签过多,致使默认只能显示其中的一部分,如图 当然,我们可以通过设置,使得x轴标签全部显示. 首先,通过chart控件属性,找到 “ChartAreas ...