2017-02-16 6 views
0

저는 현재 체이닝 체인을 배우고 있습니다. 필자는 파이썬 예제를 제공했다.스칼라 방법 체이닝 - 안녕하세요 세계

#!/bin/python3 
import sys 

class Generator(object): 

    def __init__(self): 
     return None 

    def echo(self, myStr): 
     sys.stdout.write(myStr) 
     return self 

g = Generator() 
g.echo("Hello, ").echo("World!\n") 

그러나 스칼라 버전이 작동하지 않는 것처럼 보이며 텍스트가 출력되지 않습니다.

왜 스칼라 버전이 작동하지 않는 이유는 무엇입니까?

+1

코드는 나를 위해 작동, 괜찮습니다, 당신이 그것을 실행하는 방법이 있어야합니다. – Zyga

+0

scala ./hello.sh –

+1

먼저 scalac을 사용하여 파일을 컴파일하고 컴파일 된 .class 파일을 실행해야합니다. – Zyga

답변

2

스칼라 바이트 코드를 컴파일하고 호출해야합니다. 또한 Printerfinal 인 경우 this.type을 지정할 필요가 없습니다. 당신의 driver.scala 파일이 포함되어있는 경우 :

final class Printer() { 
    def echo(msg: String) = { 
    println(msg) 
    this 
    } 
} 

object Driver { 
    def main(args: Array[String]) { 
     var pr = new Printer(); 
     pr.echo("Hello, ").echo("World!") 
    } 
} 

은 그럼 그냥 전화 :

scalac driver.scala 
scala Driver 
+0

고맙습니다. 클래스를 객체로 변경하고 컴파일 한 다음 고정 된 것을 실행합니다. –

0

스크립트에서 main 메소드를 호출해야합니다.

new Driver().main(...)으로 문제를 해결할 수 있습니다.

게다가, 객체에서 main 메소드를 정의하는 것이 일반적입니다.

그래서, 대신

class Driver { 
    def main(args: Array[String]) { 
    var pr = new Printer(); 
    pr.echo("Hello, ").echo("World!") 
    } 
} 

new Driver().main(...) 

의 I는 다음을 추천 할 것입니다.

object Driver { 
    def main(args: Array[String]) { 
    var pr = new Printer(); 
    pr.echo("Hello, ").echo("World!") 
    } 
} 

Driver.main(...) 

행운을 빈다!