Scala 方法链 - 你好世界
Scala method chaining - hello world
我目前正在学习方法链。我提供了一个有效的 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 版本不起作用吗?
您应该在脚本中调用 main 方法。
new Driver().main(...)
应该可以解决您的问题。
此外,在对象中定义一个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(...)
祝你好运!
您需要编译并调用您的 Scala 字节码。此外,如果您的 Printer
是 final
,则无需指定 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
我目前正在学习方法链。我提供了一个有效的 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 版本不起作用吗?
您应该在脚本中调用 main 方法。
new Driver().main(...)
应该可以解决您的问题。
此外,在对象中定义一个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(...)
祝你好运!
您需要编译并调用您的 Scala 字节码。此外,如果您的 Printer
是 final
,则无需指定 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