咱们使用 sbt 建立、测试、运行和提交做业。该教程会解释你在咱们的课程中将会用到的全部 sbt 命令。工具安装页说明了如何安装 sbt。服务器
要启动 sbt,打开一个终端(Windows 中的”命令提示符“)并切换到你正在解决的做业所在目录。输入sbt
将会打开 sbt 命令提示符。工具
#这是 sbt 的壳
你可使用 console
任务在 sbt 内启动 Scala 解释器。解释器(也叫作 REPL,表明”读算印复 (Read Eval Print Loop“)对于试验 Scala 代码小片断颇有用。注意,只有当你的代码没有编译错误时,解释器才能启动。oop
要退出解释器并返回 sbt,输入 ctrl-d
。单元测试
> console[info] 正在启动 Scala 解释器... 欢迎来带 Scala 版本 2.10.1 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_04-ea). 输入表达式获得运算值。 输入 :help 获取更多信息。 scala> println("Oh, hai!") # 这是Scala解释器,输入一些代码 Oh, hai! scala> val l = List(1, 2, 3) l: List[Int] = List(1, 2, 3) scala> val squares = l.map(x => x * x) squares: List[Int] = List(1, 4, 9) scala> # 输入Ctrl + D退出Scala解释器 [success] Total time: 20 s, completed Mar 21, 2013 11:02:31 AM > # 咱们回到 sbt 壳
compile
任务会编译做业的源代码,做业位于src/main/scala
目录。测试
> compile[info] 正在编译4个Scala源文件到 /Users/aleksandar/example/target/scala-2.10.1/classes... [success] 总用时: 1秒,完成时刻 2013年5月21日 下午 11:04:46 >
若是源代码中包含错误,来自编译器的错误信息会显示出来。ui
src/test/scala
目录包含项目的单元测试。要在 sbt 中运行这些测试,你可使用test
命令。编码
> test[info] ListsSuite: [info] - one plus one is two [info] - sum of a few numbers *** FAILED *** [info] 3 did not equal 2 (ListsSuite.scala:23) [info] - max of a few numbers [error] 失败: 总计 3, 失败 1, 错误 0, 经过 2, 忽略 0 [error] 失败的测试: [error] example.ListsSuite [error] {文件:/Users/luc/example/}assignment/test:test: 测试不成功 [error] 总用时: 5 秒, 完成时刻 2012年8月10日 晚上 10:19:53 >
若是你的项目有个对象带有方法(或者对象继承了 App
品质(trait)),那么你就能够经过输入 run
在 sbt 中运行代码。在 sbt 发现有多个 main 方法时,它会询问你想执行哪个。spa
> run多个 main classes 给检测到,选择一个执行: [1] example.Lists [2] example.M2 输入号码: 1[info] 运行 example.Lists 中 main method! [success] 总用时: 33 秒, 完成时刻 2012年8月10日 晚上 10:25:06 >
在做业评分过程当中,咱们在你提交的源代码上运行样式检查器以发现常见的编码样式问题。要确保你的代码符合咱们的所有样式规则,你能够在提交前运行样式检查器本身检查。sbt 的styleCheck
任务执行以下。scala
> styleCheck[info] 正在检查文件 /Users/luc/Documents/epfl/ teaching/progfun/assignments/ src/main/scala/example/Lists.scala... 没问题! [info] 处理 1 文件(s) [info] 发现 0 错误(s) [info] 发现 0 警告(s) [info] 样式得分: (百分之)100 [success] 总用时: 1 秒, 完成时刻 2012年8月10日 晚上 11:34:02 >
sbt 的submit
任务用于你提交做业的解答。它会将你的源代码打包到一个.jar文件,而后上传到Coursera的服务器。注意,只有代码中没有编译错误时,代码才会被提交。code
submit
任务接收两个参数:你的电子邮件地址和提交密码。注意:提交密码不是你的登陆密码。相反,它是由Coursera生成的特殊密码。你能够在Assignments页中找到。
> submit e-mail@university.org suBmISsioNPasSwoRd [info] 正在打包 /Users/luc/example/ target/scala-2.10.1/ progfun-example_2.10.1-1.0.0-sources.jar ... [info] 打包完成。 [info] 编译 1 个 Scala 源文件 到 /Users/luc/example/ target/scala-2.10.1/classes... [info] 正在链接到 coursera。获取 challenge中... [info] 计算 challenge 响应中... [info] 提交做业中... [success] 你的代码被成功提交:你的提交已被接收,以后将会批改。 [success] 总用时: 6 秒, 完成时刻 2012年8月10日 下午 10:35:53 >
建立于2012年8月11日(周六)北京时间 凌晨 1:13 修改于2013年3月22日(周五)北京时间 凌成 2:00