Scala入门基础3

1》类和对象

类的定义和简单使用

class Student(name:String,age:Int){
  var this.name=name
  var this.age=age
  def outPut(): Unit ={
    println("学生:"+this.name+"今年"+this.age+"岁")
  }
}
object HelloWorld
{

  def main(args: Array[String]) {
    var s=new Student("王宇",18)
    s.outPut();
  }
}

继承和函数的重载

Scala重写一个非抽象方法,必须用override修饰符

class people(name:String,age:Int){
  var this.name=name
  var this.age=age
  def outPut(): Unit ={
    println("学生:"+this.name+"今年"+this.age+"岁")
  }
}
class Student(name:String, age:Int, boolean: Boolean)extends people(name,age){
  var shuaima=boolean
  override
  def outPut(): Unit = {
    println("学生:" + this.name + "今年" + this.age + "岁,帅吗" + shuaima)
  }
}
object HelloWorld
{

  def main(args: Array[String]) {
    var s=new Student("王宇",18,true)
    s.outPut();

  }

}

伴生对象

// 私有构造方法
class Marker private(val color:String) {

  println("创建" + this)

  override def toString(): String = "颜色标记:"+ color

}

// 伴生对象,与类名字相同,可以访问类的私有属性和方法
object Marker{

    private val markers: Map[String, Marker] = Map(
      "red" -> new Marker("red"),
      "blue" -> new Marker("blue"),
      "green" -> new Marker("green")
    )

    def apply(color:String) = {
      if(markers.contains(color)) markers(color) else null
    }

    def getMarker(color:String) = {
      if(markers.contains(color)) markers(color) else null
    }
    def main(args: Array[String]) {
        println(Marker("red"))
        // 单例函数调用,省略了.(点)符号
        println(Marker getMarker "blue")
    }
}输出创建颜色标记:red创建颜色标记:blue创建颜色标记:green颜色标记:red颜色标记:blue

2》Scala Trait(特征)

相当于 Java 的接口,实际上它比接口还功能强大。与接口不同的是,它还可以定义属性和方法的实现。

import java.awt

trait Pen{
  def colorReturn():String
  def sizeReturn=()=>10;
}
class Paint(color1:String,size1:Int)extends Pen{
  var col=color1
  var siz=size1
  override def colorReturn(): String = col

}
object HelloWord{

  def main(args: Array[String]): Unit = {
    val paint=new Paint("red",12)

    println(paint.sizeReturn())
  }
}

3》模式匹配

match相当于switch

  def main(args: Array[String]): Unit = {
  print(score(1))
}
  def score(x:Any): String =x match{
    case 1=>"数字1"
    case 2=>"数字2"
    case 3=>"数字3"
    case _=>"其他"
  }

使用样例类

object HelloWord {

  def main(args: Array[String]): Unit = {
    val red=Pen("Red","大")
    val blue=Pen("Blue","大")
    val yellow=Pen("Yellow","小")
   for(pen<-List(red,blue,yellow)){
     pen match {
       case Pen("Red","大")=>println("使用大毛笔画Red颜色")
       case Pen("Blue","大")=>println("使用大毛笔画RBlue颜色")
       case Pen(col,size)=>println("使用"+size+"毛笔画"+col+"颜色")
     }
   }
  }
  //样例类
  case class Pen(col: String, size: String)
}输出使用大毛笔画Red颜色使用大毛笔画RBlue颜色使用小毛笔画Yellow颜色

3》文件操作

def main(args: Array[String]): Unit = {
    val writer=new PrintWriter(new File("test.txt"))
    writer.write("王宇真帅")
    writer.close()
  }

每次调用这个方法写入时会删除以前的数据重新写入

获取控制台用户输入

def main(args: Array[String]) {
    print("请输入账号 : " )
    val line = StdIn.readLine()
    println("你的账号是: " + line)
  }输出请输入账号 : 837634852你的账号是: 837634852

遍历输出文件

Source.fromFile("test.txt").foreach {
      print
    }

追加写入文件

原文地址:https://www.cnblogs.com/837634902why/p/10467946.html

时间: 2024-10-20 01:00:02

Scala入门基础3的相关文章

第一课 Scala入门与实战笔记总结

第一课:Scala入门 1:Scala的重大价值 2:Scala基础函数入门实战 3:Scala函数入门实战 4:Scala中的Array,Map,Tuple实战 5:综合案例及Spark源码解析 Scala与Java的关系: 一:它们都是基于JVM的,但Scala可以调用Java的任何功能,比如Spark运行在Hadoop上,它可以调用Hadoop上的一切功能. 二:你可以认为Scala它是一个升级版的Java,因为Scala它本身是一门支持面向对象的语言,在Scala中,一切皆对象,它是一门

新书:Scala语言基础与开发实战

大数据科学丛书系列的最新一本<Scala语言基础与开发实战>即将面市,预计月底上架.内容还是不错的,文笔简介,内容实用,值得学.用. 大数据资深培训师王家林新作. 详细介绍大数据开发语言Scala及其在分布式框架Akka和Kafka中的应用. 秉承"实战"类图书特点,解析大量代码的编写操作,具有较强的可操作性,便于读者学习和理解. 算上再过几个月出版的<Spark内核解析及性能调优>,一年时间,大数据科学丛书系列之Spark的小套系基本形成了:从学习Spark的

Scala入门到精通——第三十节 Scala脚本编程与结束语

本节主要内容 REPL命令行高级使用 使用Scala进行Linux脚本编程 结束语 1. REPL命令行高级使用 在使用REPL命令行时,有时候我们需要粘贴的代码比较大,而普通的粘贴可能会些一些问题,比如中文粘贴会出现乱码.多行代码粘贴时会出错,此时需要用到REPL的高级功能.在日常开发过程中,我们粘贴多行代码的时候会遇到下列问题: //本意是要粘贴下面两行代码 class Person(val name:String,val age:Int) val p=new Person("摇摆少年梦&q

大数据入门基础系列之初步认识大数据生态系统圈(博主推荐)

之前在微信公众平台里写过 大数据入门基础系列之初步认识hadoop生态系统圈 http://mp.weixin.qq.com/s/KE09U5AbFnEdwht44FGrOA 大数据入门基础系列之初步认识大数据生态系统圈 1.概述 最近收到一些同学和朋友的邮件,说能不能整理一下 Hadoop 生态圈的相关内容,然后分享一些,我觉得这是一个不错的提议,于是,花了一些业余时间整理了 Hadoop 的生态系统,并将其进行了归纳总结,进而将其以表格的形式进行了罗列.涉及的内容有以下几点: 分布式文件系统

linux入门基础知识及简单命令介绍

linux入门基础知识介绍 1.计算机硬件组成介绍 计算机主要由cpu(运算器.控制器),内存,I/O,外部存储等构成. cpu主要是用来对二进制数据进行运算操作,它从内存中取出数据,然后进行相应的运算操作.不能从硬盘中直接取数据. 内存从外部存储中取出数据供cpu运存.内存的最小单位是字节(byte) 备注:由于32的cpu逻辑寻址能力最大为32内存单元.因此32位cpu可以访问的最大内存空间为:4GB,算法如下: 2^32=2^10*2^10*2^10*2^2 =1024*1024*1024

linux入门基础——linux软件管理RPM

因为linux入门基础是基于CentOS讲解的,讲的是CentOS上的软件包管理.ubuntu的软件包管理有这些:ubuntu软件包管理,包管理指南,ubuntu软件包管理. linux软件管理:RPM软件包管理 源代码形式 绝大多数开源软件都是直接以源代码形式发布 源代码一般会被打包成tar.gz的归档压缩文件 程序源代码需要手动编译成二进制形式之后才能够运行使用 源代码基本编译流程: 1 ./configure   检查编译环境.相关库文件以及配置参数并生成makefile 2 make  

Angular JS从入门基础 mvc三层架构 常用指令

Angular JS从入门基础  mvc模型 常用指令 ★ 最近一直在复习AngularJS,它是一款优秀的前端JS框架,已经被用于Google的多款产品当中.AngularJS有着诸多特性,最为核心的是:MVC.模块化.自动化双向数据绑定.语义化标签.依赖注入等等. 1.常用指令 AngularJS 通过指令扩展了HTML,且通过表达式绑定数据到 HTML.下面我们看一下AngularJS中的常用指令. (1).基本概念 指令:AngularJS中,通过扩展HTML的属性提供功能.所以,ng-

Linux入门基础命令(四)

Linux入门基础命令(四)文件系统与目录结构: 1.文件和被组织成一个单根倒置树结构2.文件系统从根目录下开始,用"/表示"3.以.开头的文件为隐藏文件4.路径分割的 /5.文件有两类数据(元数据:metadata 数据:data)6.文件系统分层结构:LSB(Linux Standard Base)FHS:(Filesystem Hierarchy Standard)7.文件名最长255个字节8.包括路径在内文件名称最长4095个字节9.蓝色-->目录 绿色-->可执行

Linux入门基础命令—cp

Linux入门基础命令-cpcp格式有以下几种 A1.如果SOURCE是一个文件,目标文件不存在:当将SOURCE复制到另外一个当前目录下不存在的文件(会新建这个文件)比如下面的这个例子是把issue复制到abc文件中,而本来当前目录app是不存在abc这个文件的,当进行复制的时候会自动生成abc这个文件,当然这两个文件只是名字不同大小是一样的: A2.如果将上述的命令再执行一遍,本来abc这个文件是已经有内容了,若再去执行,那么issue中的内容将会覆盖掉原来abc中的内容(下面红色箭头所指的