我在Scala中有一个DateTime和TimeSpan类(假设<和+运算符可以正常工作).我正在尝试定义一个'范围'函数,它采用开始/停止时间和步进的时间跨度.在C#中,我会以收益率来做这件事,我想我应该能够在Scala中做同样的事情......除了我得到一个奇怪的错误.
在'收益率'线上,我得到"非法开始陈述".
def dateRange(from : DateTime, to : DateTime, step : TimeSpan) =
{
// not sure what the list'y way of doing this is
var t = from
while(t < to)
{
yield t; // error: illegal start of statement
t = t + step
}
}
Run Code Online (Sandbox Code Playgroud)
看看这段代码,我很好奇两件事:1)我做错了什么?2)编写的代码非常必要(使用var t等).在Scala中以更快的速度执行此操作的功能是什么?
谢谢!
我有一个 AbstractSingleBeanDefinitionParser 的自定义实现,以允许我在我的 spring 配置中定义 3D 矢量,而比其他方式所需的仪式更少。
<rbf:vector3d id="test_vector" delimeter=";" value="45;46;47"/>
Run Code Online (Sandbox Code Playgroud)
效果很好,我已经使用它几个月了,没有任何问题。昨天我尝试在 .properties 文件中定义值,如下所示:
在 test.properties 我有:
vector3d.value=1,2,3
Run Code Online (Sandbox Code Playgroud)
在 xml 文件中我有:
<context:property-placeholder location="test.properties"/>
<rbf:vector3d id="test_vector_with_properties" delimeter="," value="${vector3d.value}"/>
Run Code Online (Sandbox Code Playgroud)
当我尝试运行我的单元测试时,它崩溃了,我得到了这个异常:
Caused by: java.lang.NumberFormatException: For input string: "${vector3d.value}"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1222)
at java.lang.Double.parseDouble(Double.java:510)
at scala.collection.immutable.StringLike$class.toDouble(StringLike.scala:234)
at scala.collection.immutable.StringOps.toDouble(StringOps.scala:31)
at rb.foundation.spring.xml.Vector3DBeanDefinitionParser$$anonfun$1.apply(Vector3DBeanDefinitionParser.scala:25)
Run Code Online (Sandbox Code Playgroud)
当我将 .properties 文件用于普通 bean 时,它工作得很好,这让我相信在我的解析器实现中我忽略了一个微妙之处。它是用 Scala 编写的,但您应该能够遵循它:
class Vector3DBeanDefinitionParser extends AbstractSingleBeanDefinitionParser
{
override def getBeanClass(element : Element) = classOf[Vector3D]
override def doParse(element: Element, builder: BeanDefinitionBuilder)
{
val delim = element.getAttribute("delimeter")
val value = element.getAttribute("value")
val …Run Code Online (Sandbox Code Playgroud) 我有一个包含5个模块的父项目.我试图弄清楚如何将模块级scaladoc聚合成一个有凝聚力的站点.任何帮助将非常感激.
我的公司最近编写了用于vanilla配置的gradle插件(存储库,跨项目的公共依赖项等).总的来说,这大大简化了我们的构建过程,并发现了不同项目之间的一些不一致.我们最近尝试向插件添加sourcesJar任务,但它无法正常工作.
这是破碎的插件:
package com.mycompany.plugins
import org.gradle.api.Project
import org.gradle.api.Plugin
import org.gradle.api.tasks.bundling.Jar
class OurJavaPlugin implements Plugin<Project> {
void apply(Project project) {
def date = com.mycompany.util.UtilityFunctions.getDate()
project.configure(project) {
println('Applying Java properties to: ' + project.name)
apply plugin: 'java'
apply plugin: 'maven'
apply plugin: 'idea'
apply plugin: 'eclipse'
version = date
// Use the local repos
repositories {
maven {
url "$externalDependenciesRepo"
}
maven {
url "$internalDependenciesRepo"
}
}
uploadArchives {
repositories {
mavenDeployer {
// Deploy to internal repo
repository(url: "$internalDependenciesRepo") …Run Code Online (Sandbox Code Playgroud) 有没有办法在Scala IDE中为eclipse启用TODO/FIXME/etc类型的任务?我看到的唯一TODO是.java文件.
我真的不知道如何描述我在做什么,但这个例子应该有所帮助:
val vals = Array( (0, true),
(1, true),
(2,true),
(3,true),
(4,false),
(5, true),
(6, true),
(7, false),
(8, true),
(9,true))
Run Code Online (Sandbox Code Playgroud)
我希望识别每个"真实"区域中的第一个和最后一个元素,尽管在值更改时对数组进行分区也可以正常工作.我可以强制执行此操作,但在scala中执行此操作的最佳方法是什么?
我想将Gradle用于多模块Scala项目.我无法弄清楚如何为Scala编译器使用genjavadoc-plugin.理想情况下,我想为每个库生成一个.jar,-sources.jar和-javadocs.jar.在.jar和-sources.jar很简单,但是是的Javadoc有点困难.在Maven和SBT中,您可以使用genjavadoc-plugin从Scala生成JavaDoc-able代码,然后运行JavaDoc.我不得不认为它在Gradle中同样可行,我只是不知道Gradle/Groovy能够做到这一点.
我可以制作ScalaDocs,但这些库是由Java开发人员使用的,他们希望将JavaDocs附加到.jarsEclipse中,我认为这是一个非常合理的请求.
应该包括哪些build.gradle来支持这个?
编译器插件在这里:https: //github.com/typesafehub/genjavadoc
我正在编写有关编写自定义spring命名空间处理程序的教程:http: //static.springsource.org/spring/docs/2.5.x/reference/extensible-xml.html
一切都工作得很好,直到我到B.5节注册新的处理程序和模式.
我尝试将spring.handlers和spring.schemas放入我的项目中 - 没有用
我能够找到文件| 设置| Schema和DTD,它确实在编辑器中启用了自动完成,但处理程序仍未注册.这也没有转换为spring.schemas文件中的条目.
简而言之,有人可以解释如何在intelliJ 11.1.2中执行以下操作吗?
a)配置它以识别新的模式和命名空间处理程序b)在构建工件时将正确的信息放入META-INF/spring.handlers和spring.schemas文件中?
任何帮助将不胜感激.
我有一个相当奇怪的问题w/JUnit4和Eclipse.
我有一个Quaternion.java文件和一个关联的QuaternionTest.java.在包浏览器中,我可以右键单击QuaternionTest.java文件和Run-As JUnit下的(C)图标.测试按预期运行.当我右键单击QuaternionTest.java文件并尝试运行测试时,我收到以下错误:
An internal error occurred during: "Launching java".
Path must include project and resource name: /QuaternionTest.java
Run Code Online (Sandbox Code Playgroud)
我是Eclipse和JUnit的新手,所以请原谅我这应该是显而易见的.我试过看了一下这些房产并没有看到任何东西.此外,如果我从构建路径中排除QuaternionTest.java,一切运行正常(当然,除了Quaternion测试)
任何想法都将非常感激.
[编辑]:我是个白痴.我正在使用'Eclipse IDE for Java Developers'并且应该使用'Eclipse Classic'.Scala插件在Classic下运行得更好.
*[编辑]:11/1/2011 - 10月31日发布的Beta 12版本似乎明显更好*
**[编辑]:11/4/2011 - Beta 12版本变得不稳定,以至于我们的团队切换到IntelliJ.我希望将来能够尝试Eclipse插件并获得不同的体验.
我在eclipse中有一个混合的java/scala项目,我发现代码完成并不总是有效.它似乎与"对象"以及在不同项目中定义的类有最多的问题.我知道这只是scala插件的一个"功能",但我是否应该采取一些措施来尽量减少这些功能的影响?
Eclipse Indigo
Scala Plugin: 2.0.0-beta11
Run Code Online (Sandbox Code Playgroud)
在玩了一天后,我发现从scala访问java类的静态成员时会出现大多数问题.
有谁知道标准java优先级队列的实现细节?堆?skiplist?