Scala是否有全局对象或类?

 qlb 发布于 2023-02-04 15:11

我知道程序员应该将他们的代码包装在一个应用程序对象中:

object Hello extends App {
  println("Hello, World")
}

如果我想获得任何输出,那么它在Eclipse中是必需的.但是,当我尝试在Emacs中编写一些代码(非常随便)时,我这样写:

class Pair[+T](val first: T, val second: T)

trait Friend[-T] {
  def befriend(someone: T)
}

def makeFriendWith(s: Student, f: Friend[Student]) {
  f.befriend(s)
}

似乎没有包含该函数的通用对象或类makeFriendWith.Scala是否像JavaScript一样,一切都附加到全局对象?如果没有,这个功能附加什么?

另外为什么这可以在控制台中工作(我用scala命令编译并且它有效)但是在Eclipse中不起作用?Application对象有什么用?

1 个回答
  • Scala没有顶级def,但您的脚本可以由REPL或scala脚本运行器运行.

    脚本的精确行为取决于您运行它的方式.

    REPL可以逐行或全程运行脚本.(比较:paste:paste -raw对比:load-i init.script未来选项-I init.script.)

    敏感脚本存在问题.脚本运行器应该意识到你是否正在尝试运行App.

    还有另一项工作要使脚本编写阶段易于定制.滚动查看Scripter.scala有关其当前启发式的代码注释.

    简而言之,您的defs必须包含在顶级实体中,但具体如何发生是依赖于上下文的.

    最近有一项努力为REPL提供替代的烘焙包装方案.

    这些都不是语言规范的强制要求,除了与sbt构建文件有关的特殊规则由语言定义.

    2023-02-04 15:14 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有