我想在我的ivysettings.xml文件中创建自定义解析器:
<ivysettings>
<settings defaultResolver="default"/>
<resolvers>
<chain name="default">
<url name="scala-tools">
<ivy pattern="http://scala-tools.org/repo-releases/[organisation]/[module]/[revision]/ivy-[revision].xml" />
<artifact pattern="http://scala-tools.org/repo-releases/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]"/>
<artifact pattern="http://scala-tools.org/repo-releases/[organisation]/[module]/[revision]/[artifact].[ext]"/>
</url>
<!--<ibiblio name="ibiblio"/>-->
</chain>
</resolvers>
</ivysettings>
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我只有一个UrlResolver会尝试在scala-tools repo中查找我的依赖项.如果我正确指定我的依赖项,那么 ivy将尝试在http://scala-tools.org/repo-releases/org.scala-lang/scala-library/2.8.0/scala-library-2.8.0中找到它. jar和http://scala-tools.org/repo-releases/org.scala-lang/scala-library/2.8.0/scala-library.jar(是的,根据我在ivysettings.xml中的说明)显然,它找不到任何东西.为了让事情有效,我必须以这种方式指定依赖关系:
<ivy-module version="2.2">
<info organisation="org.yoba" module="Yoba"/>
<dependencies>
<dependency org="org/scala-lang" name="scala-library" rev="2.8.0"/>
<!--<dependency org="org.scala-lang" name="scala-library" rev="2.8.0"/>-->
<dependency org="org/scala-lang" name="scala-compiler" rev="2.8.0"/>
<!--<dependency org="org.scala-lang" name="scala-compiler" rev="2.8.0"/>-->
</dependencies>
</ivy-module>
Run Code Online (Sandbox Code Playgroud)
问:如何改变工件模式/其他东西迫使常春藤使其工作正常?
FSC每次都重新编译我的.scala文件,即使没有必要 - 我可以编译它两次而不需要在两次尝试之间编辑任何内容并重新编译它们!例如,我有2个文件
Hello.scala
class Hello{
print("hello")
}
Run Code Online (Sandbox Code Playgroud)
和Tokens.scala:
abstract class Token(val str: String, val start: Int, val end: Int)
{override def toString = getClass.getSimpleName + "(" + "[" + start + "-" + end + "]" + str + ")"}
class InputToken(str: String, start: Int, end: Int)
extends Token(str, start, end)
class ParsedToken(str: String, start: Int, end: Int, val invisible: Boolean)
extends Token(str, start, end)
Run Code Online (Sandbox Code Playgroud)
当我要求ant从头编译项目时,我看到以下输出:
ant compile
init:
[mkdir] Created dir: D:\projects\Test\build\classes
[mkdir] Created dir: D:\projects\Test\build\test\classes
compile:
[fsc] …Run Code Online (Sandbox Code Playgroud) 你将如何实现通过正则表达式解析一些输入并将创建的字符串转换为其他类型的类?我的方法是:
class ARegex[T](regex:Regex, reform:Option[String => T]){
def findFirst(input:String):Option[T] = {
(regex.findFirstIn(input), reform) match{
case (None, _) => None
case (Some(s), None) => Some(s) // this won't compile because of type mismatch
case (Some(s), Some(fun)) => Some(fun(s))
}
}
}
class BRegex[T](regex:Regex, reform:Option[String => T]) {
def findFirst(input:String) = { //returns Option[Any] - erasure
(regex.findFirstIn(input), reform) match{
case (None, _) => None
case (Some(s), None) => Some(s)
case (Some(s), Some(fun)) => Some(fun(s))
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试在scalacheck属性中使用specs mathers.例如,我有一个像这样工作的匹配器:
x must matchMyMatcher(y)
Run Code Online (Sandbox Code Playgroud)
当我想在scalacheck属性中使用此匹配器时,我执行以下操作:
import org.scalacheck._
import org.specs._
...
val prop = Prop.forAll(myGen){
(x,y) => new matchMyMatcher(x)(y)._1
}
prop must pass
Run Code Online (Sandbox Code Playgroud)
不幸的是,在这种情况下,我删除了我在matcher中放置的调试信息,当属性失败时我需要它.是否有规定的方法在道具内使用匹配器?
我想拥有可以用list,array,seq,set,stack,queue等实例化的类.在我看来
class A
class B(elems:A*)
Run Code Online (Sandbox Code Playgroud)
应该处理这样的东西.
这是我的解决方案:
class A
class B(elems:Iterable[A]){
def this(elem:A) = this(Seq(elem))
}
Run Code Online (Sandbox Code Playgroud)
你能建议任何改进吗?
def isSafe( i:Int) = {
var count = i
var acc = 0
while(count!=0){
acc += i*i
count -= 1
}
acc
}
Run Code Online (Sandbox Code Playgroud) scala ×5
ant ×1
collections ×1
compilation ×1
concurrency ×1
dependencies ×1
ivy ×1
scalac ×1
scalacheck ×1
specs ×1
types ×1