メソッド定義

2019年5月8日
1 分

クラスにはメソッドを定義できる。簡単な例からいこう。

scala> class Person(val name: String) {  
     |     def hello(): String = {  
     |         "Hello, I'm " + name + "!"  
     |     }  
     | }  
defined class Person

def で始まるのがメソッド定義だ。この例では引数をとらない hello メソッドを定義している。= を使うのがちょっと珍しい。

呼び出すには . (ドット)を使う。

scala> val andy = new Person("Andy")  
andy: Person = Person@8d3da30  
  
scala> andy.hello()  
res0: String = Hello, I'm Andy!

メソッドの本体を { } で囲っているけど、これは一般には複数の式からなるから必要なのであって、メソッド定義の構文として必要なわけではない。言い換えると、メソッド本体が式一つだけなら { } はなくてもいい。こんなふうに。

scala> class Point(val x: Int, val y: Int) {  
     |     def +(p: Point): Point = new Point(x + p.x, y + p.y)  
     | }  
defined class Point

さらっと書いたけど、演算子がメソッドとして定義できるんだな。なんか条件とかあるんだろうか。

ま、とにかくこんなふうに使える。

scala> val p1 = new Point(1, 1)  
p1: Point = Point@6b93c152  
  
scala> val p2 = new Point(2, 2)  
p2: Point = Point@cec7389  
  
scala> val p3 = p1 + p2  
p3: Point = Point@1514f0c2  
  
scala> p3.x  
res0: Int = 3  
  
scala> p3.y  
res1: Int = 3

今日は時間がないのでここまで。