是否可以从内在特质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)
谢谢
我正在尝试设置一个具有想法支持的多模块 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?
谢谢
有没有办法在摩纳哥编辑器中完全隐藏概览标尺?仍然可以看到以下内容:
overviewRulerLanes: 0,
hideCursorInOverviewRuler: true,
scrollbar: {
vertical: 'hidden'
},
overviewRulerBorder: false,
Run Code Online (Sandbox Code Playgroud) 为什么不允许出现以下情况?(2.12):
type Foo <: {def foo(): Unit}
type Bar <: {def bar(): Unit} with Foo
Run Code Online (Sandbox Code Playgroud)
对我来说看起来很自然,Bar应该同时具有foo()和bar()。
我在这个例子中遇到了解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) 我有一个 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.0到gradle publishToMavenLocal
有什么线索吗?
无法弄清楚为什么 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)
感觉是因为路径依赖类型,但我不明白到底出了什么问题,以及是否有解决它的好方法。