scala – 为什么“set”无法为自定义SettingKey赋值?我可以在sb
以下是具有自定义设置的sbt 0.13.1项目及其值:
% pwd /Users/tisue/myproj % ls build.sbt % cat build.sbt val foo = settingKey[String]("This is a custom setting") foo := "bar" % sbt [info] Set current project to myproj (in build file:/Users/tisue/myproj/) > show foo [info] bar 到现在为止还挺好.但现在: > set foo := "qux" <set>:1: error: not found: value foo foo := "qux" ^ [error] Type error in expression 这不行吗 我部分地了解这里出了什么问题集合评估Scala表达式,并且该表达式显然是在val foo不在范围内的上下文中编译的. 但是,当我们从.sbt文件中编译foo:= …时,我会期待使foo的范围成为可能,当shell中编译相同的东西时,它也会生效. 解决方法
截至0.13.6(2014-09-12),这不再是限制(
#1059/
#1456)
原始答案 – 任何使用sbt 0.13.0 – 0.13.5的项目 事实证明0.13.0 changes清楚地表明这是一个预期的行为:
这样,您应该可以在项目/ Build.scala中定义之后共享该设置,如下所示: import sbt._ import Keys._ object HelloBuild extends Build { lazy val foo = settingKey[String]("This is a custom setting") foo := "Build.scala" } build.sbt scalaVersion := "2.10.4-RC1" foo := "build.sbt" 然后,在sbt shell中: [sbt-0-13-1]> foo [info] build.sbt [sbt-0-13-1]> set foo := "shell" [info] Defining *:foo [info] The new value will be used by no settings or tasks. [info] Reapplying settings... [info] Set current project to sbt-0-13-1 (in build file:/Users/jacek/sandbox/so/sbt-0.13.1/) [sbt-0-13-1]> foo [info] shell (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- AngularJS重置表单 ng-dirty
- AngularJS 1.5错误引导IBM Mobilefirst
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 排版:列表
- twitter-bootstrap – Twitter Bootstrap – 导航栏内的下拉
- 高级 Angular 组件模式 (2)
- angular – 如何动态地将NG_VALUE_ACCESSOR组件添加到被动形
- Access-Control-Allow-Origin angularjs到php
- WinForm使用WebService自动升级
- angular – 使用formControlName
- WebService SendTimeout 超时问题