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")
}
}

最后的输出结果:






本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5345315.html,如需转载请自行联系原作者

相关文章
|
4月前
|
分布式计算 Java 大数据
Scala:样例类、模式匹配、Option、偏函数、泛型(三)
Scala:样例类、模式匹配、Option、偏函数、泛型(三)
51 0
|
5月前
|
Scala
163 Scala 类
163 Scala 类
20 0
|
7月前
|
Java Shell API
Scala和Kotlin脚本编程
Scala和Kotlin作为运行在JVM上的编程语言,解决了Java的很多痛点。今天我们来聊聊如何将Scala和Kotlin作为脚本语言使用(Java不支持以脚本形式运行哦)。
58 0
|
11月前
|
JSON 分布式计算 算法
Spark-编程进阶(Scala版)
Spark-编程进阶(Scala版)
|
11月前
|
存储 缓存 分布式计算
Spark RDD编程基础(Scala版)
Spark RDD编程基础(Scala版)
|
11月前
|
存储 大数据 Scala
大数据开发基础的编程语言的Scala的Actor编程
当谈到大数据开发时,Scala是一个非常流行的编程语言。Scala是一种静态类型的编程语言,它结合了面向对象和函数式编程范型。Scala为大数据处理提供了强大的支持,因此在许多大数据项目中被广泛使用。其中,Scala的Actor编程模型可以帮助我们设计和实现高效的并发系统。
71 0
|
分布式计算 Scala Spark
Scala写Spark笔记
Scala写Spark笔记
67 0
|
SQL JSON 前端开发
Scala的面向对象与函数编程
Scala的面向对象与函数编程
Scala的面向对象与函数编程
|
Scala
Scala第2章 控制结构和函数(编程题)
Scala第2章 控制结构和函数(编程题)
130 0
Scala第2章 控制结构和函数(编程题)
|
存储 分布式计算 Java
一天学完spark的Scala基础语法教程十、类和对象(idea版本)
一天学完spark的Scala基础语法教程十、类和对象(idea版本)
96 0
一天学完spark的Scala基础语法教程十、类和对象(idea版本)