小编0__*_*0__的帖子

有没有一种简单的方法用Dotty编译sbt项目?

既然Dotty显然已经准备好编译更大的项目了,我想知道是否有一种简单的方法可以将它用作sbt项目中Scalac的替代品?就像我有以下内容build.sbt:

name := "Foo"

scalaVersion := "2.11.7"
Run Code Online (Sandbox Code Playgroud)

我可以采取一些步骤来替换Scalac for Dotc吗?

scala sbt dotty

10
推荐指数
1
解决办法
353
查看次数

较高kinded类型的隐式参数解析

请考虑以下代码:

object foo {

    trait Bar[Q[_]]

    implicit object OptionBar extends Bar[Option]

    def test[T, C[_]](c: C[T])(implicit bar: Bar[C]) = ()

    def main(args: Array[String]) {
      test(Some(42): Option[Int])  //???
    }
}
Run Code Online (Sandbox Code Playgroud)

这是有效的,但我需要输入Some(42)作为Option [Int],否则隐式对象OptionBar将不会被解析(因为预期会改为Bar [Some]).有没有办法避免显式输入,所以我在测试中得到隐含的OptionBar对象,即使我用Some或None提供测试?

[澄清]

  • 我在这里使用Option作为例子,如果我有一个Bar抽象类等它也应该工作.
  • 比如,当其他不相关的条在范围内时,解决方案也应该有效 implicit object listBar extends Bar[list]

[更新]

似乎使Bar的参数逆变成功了:

object foo {

  trait Bar[-Q[_]] //<---------------

  implicit object OptionBar extends Bar[Option]
  implicit object ListBar extends Bar[List]

  def test[T, C[_]](c: C[T])(implicit bar: Bar[C]) = ()

  def main(args:Array[String]) {
    test(Some(42))
  }
}
Run Code Online (Sandbox Code Playgroud)

但当然这是对Bar的可能性的严重限制,所以我仍然希望得到更好的答案.

scala implicit higher-kinded-types

9
推荐指数
2
解决办法
1274
查看次数

基于ClassTag的模式匹配对于基元失败

我认为以下将是收集满足给定类型的集合元素的最简洁和正确的形式:

def typeOnly[A](seq: Seq[Any])(implicit tag: reflect.ClassTag[A]): Seq[A] = 
  seq.collect {
    case tag(t) => t
  }
Run Code Online (Sandbox Code Playgroud)

但这仅适用于AnyRef类型,而不适用于原语:

typeOnly[String](List(1, 2.3, "foo"))  // ok. List(foo)
typeOnly[Double](List(1, 2.3, "foo"))  // fail. List()
Run Code Online (Sandbox Code Playgroud)

显然直接形式有效:

List(1, 2.3, "foo") collect { case d: Double => d }  // ok. List(2.3)
Run Code Online (Sandbox Code Playgroud)

所以必须有(简单!)方法来修复上述方法.

reflection scala type-erasure

9
推荐指数
1
解决办法
3861
查看次数

Scala的遗传算法库

哪些是Scala的成熟,维护和灵活的开源遗传算法(GA)库?

  • 成熟的意思是它非常完整且无错误,理想情况下都有很好的文档记录.
  • 保持意义,它不是一个废弃的项目,它适用于当前(2.10)Scala版本.
  • 灵活的意思,它是完全可配置的,我可以插入我自己的染色体表示,适应性,育种等功能,它是通用的,并使用良好的Scala的类型系统.

理想情况下,在GitHub上,它可以最好地与我的工作流程集成.

scala genetic-algorithm

9
推荐指数
1
解决办法
1426
查看次数

带有新sbt 0.13多项目定义的连字子项目名称

我正在尝试使用新的sbt 0.13()设置一个多项目build.sbt.这个lazy val名字决定子项目名称的想法对我来说听起来很奇怪.此外,我没有得到连字符,但最终得到了骆驼案:

lazy val myprojectCore = project
Run Code Online (Sandbox Code Playgroud)

当我列出时> projects,我明白了myprojectCore.我该myproject-core怎么做?


另外,name现在关键的目的和关系是什么?

scala sbt

9
推荐指数
2
解决办法
2263
查看次数

使用Either的别名在Scala中写入类似联合类型的Ceylon

随着Ceylon 1.0的发布,一些人正在讨论联合类型的有用性.我想知道你如何简洁地编写以下代码:

String test(String | Integer x) {
  if (x is String) {
     return "found string";
  } else if (x is Integer) {
     return "found int";
  }
  return "why is this line needed?";
}

print(test("foo bar"));  // generates 'timeout'... well, whatever
Run Code Online (Sandbox Code Playgroud)

......在斯卡拉?我的想法是这样的:

type | [+A, +B] = Either[A, B]

object is {
  def unapply[A](or: Or[A]): Option[A] = or.toOption

  object Or {
    implicit def left[A](either: Either[A, Any]): Or[A] = new Or[A] {
      def toOption = either.left.toOption
    }
    implicit def right[A](either: Either[Any, …
Run Code Online (Sandbox Code Playgroud)

types scala

9
推荐指数
1
解决办法
475
查看次数

没有ClassTag可用于MyClass.this.T的抽象类型

这很好用

class MyClass[T<: Actor: ClassTag] extends Actor {
  //....
}
Run Code Online (Sandbox Code Playgroud)

但这不是由于错误 No ClassTag available for MyClass.this.T

class MyClass extends Actor {
  type T<: Actor
  //...
}
Run Code Online (Sandbox Code Playgroud)

即使执行以下操作:

class MyClass extends Actor {
  type T<: Actor: ClassTag //this doesn't even compile
  //...
}
Run Code Online (Sandbox Code Playgroud)

我如何使用摘要type并摆脱错误?

scala type-erasure type-parameter type-members

9
推荐指数
1
解决办法
2879
查看次数

IntelliJ IDEA(Linux):转到开头/结尾

我已经从OS X切换到Linux,并试图习惯IDEA中的不同键盘快捷键.我找不到的一个非常重要的事情是"将光标移动到行的开头/结尾"(OS X上的Cmd-Left和Cmd-Right).同时查看参考卡并未显示任何有用的信息.

linux keyboard-shortcuts intellij-idea

9
推荐指数
3
解决办法
5600
查看次数

生成不含JavaScript的Scala API文档,但是静态HTML或Markdown

对于应用程序内帮助浏览器,我想呈现API文档.不幸的是,Scaladoc似乎只生成充满了可怕的JavaScript内容的HTML文件,因此即使使用相当重的组件(例如SwingBox(虽然它确实具有非常好的CSS))也无法呈现这些文件.

所以我的问题是:我可以利用Scaladoc工具或其API(如果有的话)生成一些中间表示,然后我可以将其写入自定义Markdown文件或静态HTML页面吗?

scala scaladoc

9
推荐指数
1
解决办法
301
查看次数

Scala 2.12.2发出大量无用的"警告:参数值......在方法中......从不使用"警告.如何摆脱它们?

这是一个问题所以我不必遍历整个互联网来找到答案,因为scalac选项目前尚未发布.

当我有全局变量时,如何从Scala 2.12.2开始禁用这些警告"-Xlint"

scala sbt linter

9
推荐指数
1
解决办法
2412
查看次数