我是kotlin的新手,所以我开始克隆https://github.com/Kotlin/kotlin-koans存储库来学习这个新的languange.
我已经安装了kotlin插件,并且在关注ray-wenderlich教程之前也尝试使用android项目并且它工作正常(我还不能发布超过2个链接.)
因此,在我克隆kotlin-koans并尝试第一次运行它之后,这就是我得到的:截图
我尝试在互联网上搜索.但似乎我仍然无法找到解决方案.
这是gradle.build
buildscript {
ext.kotlin_version = '1.1.0'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
apply plugin: 'kotlin'
sourceSets {
main.java.srcDirs += 'src'
test.java.srcDirs += 'test'
}
repositories {
mavenCentral()
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
compile 'com.google.guava:guava:16.0'
testCompile 'junit:junit:4.12'
}
Run Code Online (Sandbox Code Playgroud)
当我使用终端运行测试时,这就是发生的事情.
D:\kotlin-koans>gradlew test
:compileKotlin
e: java.lang.ClassNotFoundException: com.sun.tools.javac.util.Context
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at org.jetbrains.kotlin.gradle.tasks.JarSearchingUtilKt.findToolsJar(jarSearchingUtil.kt:45)
at org.jetbrains.kotlin.compilerRunner.GradleCompilerEnvironment$toolsJar$2.invoke(GradleCompilerEnvironment.kt:21)
at org.jetbrains.kotlin.compilerRunner.GradleCompilerEnvironment$toolsJar$2.invoke(GradleCompilerEnvironment.kt:15)
at kotlin.SynchronizedLazyImpl.getValue(Lazy.kt:130)
at org.jetbrains.kotlin.compilerRunner.GradleCompilerEnvironment.getToolsJar(GradleCompilerEnvironment.kt) …Run Code Online (Sandbox Code Playgroud) println下面的 Kotlin 代码中前面的双冒号是什么意思?
class InitOrderDemo(name: String) {
val firstProperty = "First property: $name".also(::println)
}
Run Code Online (Sandbox Code Playgroud)
代码打印:
第一个属性:你好
更新到最新版本之后,构建项目时出现一个奇怪的错误:
[:feature_x, :feature_y] all package the same library [com.github.PhilJay:MPAndroidChart].
Run Code Online (Sandbox Code Playgroud)
我确实在两个功能中都添加了该库。它们设置为依赖项,例如:
api "com.github.PhilJay:MPAndroidChart:$rootProject.MPAndroidChart"
Run Code Online (Sandbox Code Playgroud)
这有什么问题?
我想了解为什么冰糕不抱怨这个例子:例子:
sig {params(x: T::Hash[String, String]).void}
def foo(x)
x.each do |k, v|
puts "key = #{k}, value = #{v}"
end
end
hash = {}
hash[1] = 1
foo(hash) # I'd expect this to fail to type-check
Run Code Online (Sandbox Code Playgroud)
我已声明foo接受 [String, String] 的哈希值,但我传递的是 [Integer, Integer] 的哈希值。我以为冰糕会在这里抱怨......
有没有办法让它在这种情况下出错?