首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何编译这段Scala代码

如何编译这段Scala代码
EN

Stack Overflow用户
提问于 2014-11-19 01:27:25
回答 3查看 912关注 0票数 0

我有一个名为sumit.scala的文件,其中包含以下内容

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
object sumit {
    def main(args: Array[String]) = {
        val start:Double = System.nanoTime
        total_select_values(1 to 15000, {e => true})
        val end:Double = System.nanoTime
        println("time " + (end - start)/ 1000000000.0)
        println("")
    }
}

def total_select_values(list: Range, selector : Int => Boolean) = {
  var sum = 0
  list.foreach { e =>
    if (selector(e)) sum += e
  }
  sum
}

我正在尝试在命令行上编译它

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
scalac sumit.scala

它编译时没有错误,但当我运行它时

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
scala sumit

我收到了一堆错误,我是scala的新手,我只是想在编译后对这段代码进行计时,看看性能差异。我已经尝试将我的"total_select_values“放入对象和传出(如下所示),没有区别。

谢谢你的帮助!

使用Scala信息和实际错误进行了更新

Scala2.11.4Java 1.7.0_40版

java.lang.NoSuchMethodException: sumit.main([Ljava.lang.String;) at scala.reflect.internal.util.ScalaClassLoader$class.run(ScalaClassLoader.scala:66) at scala.reflect.internal.util.ScalaClassLoader$URLClassLoader.run(ScalaClassLoader.scala:101) at scala.tools.nsc.CommonRunner$class.run(ObjectRunner.scala:22) at scala.tools.nsc.ObjectRunner$.run(ObjectRunner.scala:39) at scala.tools.nsc.CommonRunner$class.runAndCatch(的java.lang.Class.getMethod(未知源)scala.tools.nsc.ObjectRunner$.runAndCatch(ObjectRunner.scala:39) at scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala:65) at scala.tools.nsc.MainGenericRunner.run$1(MainGenericRunner.scala:87) at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:98) at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:103) at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)的ObjectRunner.scala:29)

EN

回答 3

Stack Overflow用户

发布于 2014-11-19 03:03:39

函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def total_select_values ...

必须放在对象或类的内部。这似乎是基于JVM的Scala的一个约束;不能有真正的自由函数。

票数 1
EN

Stack Overflow用户

发布于 2014-11-19 01:40:31

试着这样运行它

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
scala sumit.scala

即添加文件的扩展名。

票数 0
EN

Stack Overflow用户

发布于 2014-11-19 02:30:05

当我运行scalac时,您的代码显示以下错误:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sumit.scala:11: error: expected class or object definition
def total_select_values(list: Range, selector : Int => Boolean) = {
^
one error found

但是,如果我更改代码以将total_select_values放入sumit对象中(如注释中所建议的):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
object sumit {
    def main(args: Array[String]) = {
        val start:Double = System.nanoTime
        total_select_values(1 to 15000, {e => true})
        val end:Double = System.nanoTime
        println("time " + (end - start)/ 1000000000.0)
        println("")
    }

    def total_select_values(list: Range, selector : Int => Boolean) = {
        var sum = 0
        list.foreach { e =>
            if (selector(e)) sum += e
        }
        sum
    }
}

然后,当我运行时:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
scalac sumit.scala 
scala sumit

它产生:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
time 0.003286401time 0.003286401

但同时,由于scala可以交互运行。只是在运行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
scala sumit.scala 

也是有效的。(可以省略scalac步骤。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27007368

复制
相关文章
区块链:它是什么,它是如何工作的
编者按:本报告是由《威胁镜头》,Stratfor的独特保护情报产品制作的。以企业安全领导者的头脑设计,威胁镜头使行业专业人士能够预测、识别、衡量和减轻世界各地的人们和资产面临的威胁。
架构师研究会
2018/07/25
6250
区块链:它是什么,它是如何工作的
IPsec 是什么?它是如何工作的?
IPsec(Internet Protocol Security)是为IP网络提供安全性的协议和服务的集合,它是V**(Virtual Private Network,虚拟专用网)中常用的一种技术。由于IP报文本身没有集成任何安全特性,IP数据包在公用网络如Internet中传输可能会面临被伪造、窃取或篡改的风险。通信双方通过IPsec建立一条IPsec隧道,IP数据包通过IPsec隧道进行加密传输,有效保证了数据在不安全的网络环境如Internet中传输的安全性。
Ponnie
2022/01/13
1.3K0
IPsec 是什么?它是如何工作的?
MVC 是什么?它是如何工作的?-15
MVC 由三个基本部分组成 - 模型(Model),视图(View)和控制器(Controller)。 它是用于实现应用程序的用户界面层的架构设计模式。 一个典型的实际应用程序通常具有以下层:
角落的白板报
2019/05/15
2.2K0
MVC 是什么?它是如何工作的?-15
Hadoop没有消亡,它是大数据的未来
有人认为 Hadoop 正在失败,但硅谷数据管理公司 Hortonworks 的总经理 Vamsi K. Chemitiganti 并不这么看,为了反驳此前一篇文章《为什么 Hadoop 正在消亡?(Why Hadoop is Failing)》的观点,他在自己的博客上写了一篇论述自己看法的文章,他认为达尔文式的开源生态系统正在确保 Hadoop 成为稳固和成熟的技术平台。机器之心对这篇反驳文章进行了编译介绍,但本文内容并不代表机器之心的观点。
IT阅读排行榜
2018/08/16
2550
linux awk 数组和循环
awk 中数组叫做关联数组(associative arrays),下标可以是数字也可以是字符串。awk 中的数组不必提前声明,也不必声明大小,初始化数组元素用 0 或空串,这根据上下文而定。
阳光岛主
2019/02/19
4.1K0
linux awk 数组和循环[通俗易懂]
awk 中数组叫做关联数组(associative arrays),下标可以是数字也可以是字符串。awk 中的数组不必提前声明,也不必声明大小,初始化数组元素用 0 或空串,这根据上下文而定。
全栈程序员站长
2022/09/09
3.7K0
awk工作常用技巧
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haluoluo211/article/details/77766092
bear_fish
2018/09/14
8700
awk工作常用技巧
观点 | Hadoop没有消亡,它是大数据的未来
选自KDnuggets 作者:Vamsi K. Chemitiganti 机器之心编译 参与:微胖、李泽南、吴攀 有人认为 Hadoop 正在失败,但硅谷数据管理公司 Hortonworks 的总经理 Vamsi K. Chemitiganti 并不这么看,为了反驳此前一篇文章《为什么 Hadoop 正在消亡?(Why Hadoop is Failing)》的观点,他在自己的博客上写了一篇论述自己看法的文章,他认为达尔文式的开源生态系统正在确保 Hadoop 成为稳固和成熟的技术平台。机器之心对这篇反驳文章
机器之心
2018/05/07
5330
区块链2018:什么是区块链技术,它是如何工作的?
作为金融技术和在线服务领域最受关注的技术,BLOCKCHAIN已经在2017年底迅速出现。 但是区块链究竟是什么?它是如何工作的? 资深商业策略师Don Tapscott在2016年TED Talk上表示,区块链已经到来,永远塑造未来。 区块链自2008年推出比特币以来可能一直存在,但直到近十年后,该技术才真正达到了主流意识水平。 Tapscott先生说:“未来几十年可能产生最大影响的技术已经到来。 这不是社交媒体,它不是大数据,它不是机器人,它甚至不是AI。 “你会惊奇地发现,这是比特币等数字货币的
架构师研究会
2018/04/09
2.7K0
Linux 黑话解释:什么是包管理器?它是如何工作的?
简单来说,“ 包管理器(package manager)”(或“软件包管理器”)是一种工具,它允许用户在操作系统上安装、删除、升级、配置和管理软件包。软件包管理器可以是像“软件中心”这样的图形化应用,也可以是像 apt-get 或 pacman 这样的命令行工具。
用户1880875
2021/09/13
9760
为什么Spark能成为最火的大数据计算引擎?它是怎样工作的?
十年前我们只有Hadoop,大家首先通过HDFS实现海量数据的共享存储,然后使用MapReduce以批处理的方式处理这些海量数据,这一切看起来似乎十分完美。
IT阅读排行榜
2020/09/14
8760
每天都在用的浏览器,你知道它是如何工作的吗?
浏览器经历了很多年的发展,浏览器引擎也在不停地迭代和演进。从PC时代到移动端,以独立浏览器的形态还是以系统WebView组件内嵌的形态存在,在互联网的生态系统中一直扮演着重要的角色。了解浏览器及其原理可以让我们打开另一个世界。
iMike
2019/08/23
2.2K0
每天都在用的浏览器,你知道它是如何工作的吗?
2000字带您了解什么是 SD-WAN,它是如何工作的?
软件定义的广域网 (SD-WAN) 被定义为一种虚拟 WAN 架构,它允许企业安全高效地将用户连接到应用程序。该技术解决方案为网络带来了无与伦比的敏捷性和成本节约。借助 SD-WAN,与企业传统上使用的托管 MPLS 服务相比,组织可以在更短的时间内以更低的成本交付响应更快、更可预测的应用程序。IT 变得更加敏捷,可以在几分钟内部署站点;利用任何可用的数据服务,例如 MPLS、专用互联网接入 (DIA)、宽带或无线;能够立即重新配置站点;并且更容易支持迁移到混合云。
网络技术联盟站
2023/03/02
7670
2000字带您了解什么是 SD-WAN,它是如何工作的?
Linux三剑客之awk(3):awk数组与语法
现有如下文本,格式如下:即左边是随机字母,右边是随机数字, 即将相同的字母后面的数字加在一起,按字母的顺序输出
宜信技术学院
2019/07/02
9720
Linux三剑客之awk(3):awk数组与语法
神器!awk 在工作中的应用案例
当然可以使用你最熟悉的开发语言去写代码实现,本文用awk来实现,相比之下,性能极高。
后端技术探索
2020/03/19
5380
神器!awk 在工作中的应用案例
为什么没有运营的SaaS没有未来?
来源:大虫运营心经  作者 : 花大虫 ---- 职业生涯前几年一直在做C端互联网相关的工作,这两年突然转做B端了,感受有很大的差异,但是却又有很大的相似性,To C的运营经验对To B的运营有巨大的帮助。越做越觉得To B行业有意思,大有可为。 最近我会把近2年亲身经历的一些To B行业运营经验分享给大家。 万信是我现在创业在做的一家餐饮SaaS公司,后面文章中会有涉及。 ✎✎✎ 大家谈To B都会讲产品、讲销售,很少人会讲到运营。殊不知一个To B产品的运营非常关键,因为这直接决定了一个非常重要
腾讯SaaS加速器
2020/06/09
9520
为什么学习JavaScript设计模式,因为它是核心
那么什么是设计模式呢?当我们在玩游戏的时候,我们会去追求如何最快地通过,去追求获得已什么高效率的操作获得最好的奖品;下班回家,我们打开手机app查询最便捷的路线去坐车;叫外卖时候,也会找附近最近又实惠又好吃的餐厅叫餐。
达达前端
2019/11/13
6250
为什么说它是最难的设计模式之一?
访问者模式(Visitor Pattern),是一种将数据操作与数据结构分离的设计模式。
程序视点
2023/09/13
2390
为什么说它是最难的设计模式之一?
点击加载更多

相似问题

异常语法中“或”的解释,为什么它是有效的语法,它是如何工作的?

23

循环中的Awk语法

17

awk语法中的循环

224

如何在awk中使用$0,它是如何工作的?

20

用于隔离行的awk for -循环语法

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文