scala语言基础

 

 scala基础(一)

使用class关键字后面跟上类型和构造参数来定义类。

class Greeter(prefix: String, suffix: String) {
  def greet(name: String): Unit =
    println(prefix + name + suffix)
}

 方法greet的返回类型为Unit,也就是说没有任何有意义的东西返回。同Java和C中的void使用方法类似。然后就可以使用关键字new来创建实例了。

 

val greeter = new Greeter("Hello, ", "!")
greeter.greet("Scala developer") // Hello, Scala developer!
 

 

Case Classes

Scala有一种特殊类型的类叫做"case" class。默认情况下,case class是不可变的(immutable),并且是按值比较的(compared by value)。你可以通过case class关键字来定义class classes。

case class Point(x: Int, y: Int) {

}

object PointMain {
  def main(args: Array[String]): Unit = {
    val point = Point(1, 2)
    val anotherPoint = Point(1, 2)
    val yetAnotherPoint = Point(2, 2)

    if (point == anotherPoint) {
      println(point + " and " + anotherPoint + " are the same.")
    } else {
      println(point + " and " + anotherPoint + " are different.")
    }
    // Point(1,2) and Point(1,2) are the same.

    if (point == yetAnotherPoint) {
      println(point + " and " + yetAnotherPoint + " are the same.")
    } else {
      println(point + " and " + yetAnotherPoint + " are different.")
    }
    // Point(1,2) and Point(2,2) are different.
  }
}

 

 对象

对象时它们自身定义的单一实例。你可以认为它们是他们自己的类的单例。你可以使用object关键字定义对象,可以直接使用对象的名字来引用它:

object IdFactory {
  private var counter = 0
  def create(): Int = {
    counter += 1
    counter
  }

  def main(args: Array[String]): Unit = {
    val newId: Int = IdFactory.create()
    println(newId)
    val newerId: Int = IdFactory.create()
    println(newerId)
  }
}

 

Traits

Traits是包含特定字段和方法的类型,多个Traits可以被组合。我们可以用trait关键字来定义traits。感觉类似于java中的接口。trait中的方法可以只有声明,也可以有默认实现。通过extends关键字来扩展trait,通过override关键字来覆盖traits中的实现。

trait GreeterTrait {
  // method in trait only defines the parameter list and return type
  def greetInterface(name: String): Unit

  // method in trait can also have default implementations
  def greet(name: String): Unit = {
    println("Hello, " + name + "!")
  }
}

abstract class DefaultGreeter extends GreeterTrait

class CustormizableGreeter(prefix: String, suffix: String) extends GreeterTrait {
  override def greetInterface(name: String): Unit = {
    println(prefix + name + suffix)
  }

  override def greet(name: String): Unit = {
    println("in greet " + prefix + name + suffix)
  }
}

object GreeterTraitMain {
  def main(args: Array[String]): Unit = {
    val custormizableGreeter = new CustormizableGreeter("How are you, ", "?")
    custormizableGreeter.greet("yuxuecheng")
  }
}

 

 Main Method

main方法是一个程序的入口。Java虚拟机需要一个名为main的主方法,有一个参数——一个字符串数组。用一个对象,我们可以像下面这样定义main方法:

object Main {
  def main(args: Array[String]): Unit =
    println("Hello, Scala developer!")
}

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值