次のようにすればうまくいきます。
Kotlin
1class Point(val x: Int, val y: Int) {
2 fun getX() : Point{
3 println("X = $x")
4 return this
5 }
6
7 fun getY() {
8 println("Y = $y")
9 }
10}
11
12fun main(args: Array<String>) {
13 val p1 = Point(3, 5)
14 .getX()
15 .getY()
16
17 println(p1)
18}
何が違うかというと、getX() の戻り値として this を返しているところです。
修正前のコードでは、Point(3, 5).getX().getY() となっていました。つまり、Point(3, 5) で作られた Point 型のオブジェクトのメソッドである getX() を呼び出し、その戻り値のメソッドである getY() を呼び出そうとしていました。
ところが、getX() は戻り値を戻さないメソッドなので、失敗したということです。そこで、getX() の戻り値として Point 型の this を返すことで成功するようになりました。
もう一つの修正法は次です。
Kotlin
1class Point(val x: Int, val y: Int) {
2 fun getX(){
3 println("X = $x")
4 }
5
6 fun getY() {
7 println("Y = $y")
8 }
9}
10
11fun main(args: Array<String>) {
12 val p1 = Point(3, 5)
13 p1.getX()
14 p1.getY()
15
16 println(p1)
17}
オリジナルでは p1 に Point(3, 5).getX().getY() を入れようとしていましたが、p1 には Point(3, 5) を入れ、その getX() と getY() を順に呼び出しています。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/17 15:23
2019/11/17 15:24