小编epr*_*rst的帖子

从路径相关类型mixin访问值

是否可以从内在特质mixin中访问外部特征中的值?即:

trait Outer {
  val foo
  trait Inner
}

trait InnerMixin { this: Outer#Inner =>
  def bar {
    // how can I access 'foo' here? smth like Outer.this.foo
  }
}
Run Code Online (Sandbox Code Playgroud)

谢谢

scala self-type path-dependent-type

6
推荐指数
1
解决办法
86
查看次数

gradle、idea 插件和多项目设置

我正在尝试设置一个具有想法支持的多模块 gradle 项目。它一直有效,直到我将项目范围的 gradle.properties 添加到组合中。这是一个例子:

gradle.属性:

javaVersion = 1.8
Run Code Online (Sandbox Code Playgroud)

gradle.设置:

include 'module_a'
Run Code Online (Sandbox Code Playgroud)

构建.gradle:

allprojects {
  apply plugin: 'idea'
  idea {
    project {
      jdkName = javaVersion
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

module_a 是一个空子文件夹。

gradle idea失败了:

Build file 'project/build.gradle' line: 7

* What went wrong:
A problem occurred evaluating root project 'project'.
> Cannot set property 'jdkName' on null object
Run Code Online (Sandbox Code Playgroud)

可能是什么原因?

问题2:子项目是否可以对全局idea任务进行修改,例如

idea.module.generatedSourceDirs += file('srm/main/java.generated')
Run Code Online (Sandbox Code Playgroud)

module_a仅当放入时才会有影响吗module_a/build.gradle

谢谢

intellij-idea gradle

6
推荐指数
1
解决办法
1376
查看次数

摩纳哥编辑:隐藏概览标尺

有没有办法在摩纳哥编辑器中完全隐藏概览标尺?仍然可以看到以下内容:

        overviewRulerLanes: 0,
        hideCursorInOverviewRuler: true,
        scrollbar: {
            vertical: 'hidden'
        },
        overviewRulerBorder: false,
Run Code Online (Sandbox Code Playgroud)

monaco-editor

6
推荐指数
2
解决办法
154
查看次数

扩展另一个结构类型的结构类型

为什么不允许出现以下情况?(2.12):

type Foo <: {def foo(): Unit}
type Bar <: {def bar(): Unit} with Foo
Run Code Online (Sandbox Code Playgroud)

对我来说看起来很自然,Bar应该同时具有foo()bar()

types scala structural-typing compound-type

6
推荐指数
2
解决办法
127
查看次数

使用Scala中的Java泛型方法

我在这个例子中遇到了解Scalac错误消息的问题:

Bean.java

public class Bean {
  static public class Attribute<T> {
    public final String name;
    public Attribute(String name) {this.name = name;}
    // equals and hashcode omitted for simplicity
  }

  public <T> void set(Attribute<T> attribute, T value) {}

  public static Attribute<Long> AGE = new Attribute<Long>("age");
}
Run Code Online (Sandbox Code Playgroud)

Test.scala

object Test {
  def test() {
    val bean = new Bean();
    bean.set(Bean.AGE, 2L);
  }
}
Run Code Online (Sandbox Code Playgroud)

编译yeilds this(尝试用scalac 2.9.2):

Test.scala:4: error: type mismatch;
 found   : Bean.Attribute[java.lang.Long]
 required: Bean.Attribute[Any]
Note: java.lang.Long <: Any, but Java-defined class …
Run Code Online (Sandbox Code Playgroud)

generics scala scala-java-interop

5
推荐指数
1
解决办法
662
查看次数

Gradle 未发布自定义 jar 工件

我有一个 gradle 构建,必须将预构建的 jar 文件发布为工件。由于某种原因,它没有被拾取。这是重现它的简化版本:

文件夹内容:

settings.gradle
build.gradle
some.jar
Run Code Online (Sandbox Code Playgroud)

设置.gradle:

rootProject.name = 'some'
Run Code Online (Sandbox Code Playgroud)

构建.gradle:

apply plugin: 'base'
apply plugin: 'maven-publish'

group = 'foo.bar'
version = '1.0'

task copyPrebuilt(type: Copy) {
  from(projectDir) {
    include 'some.jar'
    rename 'some', "some-$version"
  }
  into distsDir
}

artifacts {
  // should be 'archives'?
  // http://stackoverflow.com/questions/39068090/gradle-archives-artifacts-not-populated-to-default-configuration
  'default' (file("$distsDir/some-${version}.jar")) {
    name 'some'
    type 'jar'
    builtBy copyPrebuilt
  }
}
Run Code Online (Sandbox Code Playgroud)

some-1.0.jar未被复制~/.m2/repository/foo/bar/some/1.0gradle publishToMavenLocal

有什么线索吗?

gradle

3
推荐指数
1
解决办法
6861
查看次数

覆盖类型边界时不兼容的类型错误

无法弄清楚为什么 scalac 在这里不开心(2.12):

trait A {
  type Self <: A
  type X <: Self
}

trait B extends A {
  override type Self <: B
  override type X = C // error: overriding type X in trait A with bounds <: B.this.Self
}

trait C extends B {
  override type Self = C
}
Run Code Online (Sandbox Code Playgroud)

感觉是因为路径依赖类型,但我不明白到底出了什么问题,以及是否有解决它的好方法。

overriding scala path-dependent-type type-alias

3
推荐指数
1
解决办法
150
查看次数