当前位置: 代码迷 >> python >> Scala方法链接-Hello World
  详细解决方案

Scala方法链接-Hello World

热度:38   发布时间:2023-06-16 10:17:11.0

我目前正在学习方法链接。 我提供了一个有效的python示例。

#!/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")

但是Scala版本似乎不起作用,没有文本输出。

#!/usr/bin/env scala

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

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

有人知道为什么scala版本不起作用以及为什么吗?

您需要编译并随后调用scala字节码。 另外,如果您的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

您应该在脚本中调用main方法。

new Driver().main(...)应该可以解决您的问题。

此外,在对象中定义主要方法是一种规范。

所以,代替

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

new Driver().main(...)

我建议以下。

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

Driver.main(...)

祝好运!

  相关解决方案