これはgradle特有の問題のためのかなりのkotlin-dslですが、全体的にはkotlin言語そのものに当てはまると思いますので、私はそのタグを使用しません。 GradleのAPIでKotlinはgradleのActionクラスをlambdaに変換できません
は、クラスAction<T>
は次のように定義されていますので、理想的に
@HasImplicitReceiver
public interface Action<T> {
/**
* Performs this action against the given object.
*
* @param t The object to perform the action on.
*/
void execute(T t);
}
(それはSAMとクラスであるため)、これはkotlinで動作するはずです:
val x : Action<String> = {
println(">> ${it.trim(0)}")
Unit
}
しかし、
Fwiw、さらにAction<String> = { input: String -> ... }
が表示されます。動作しません。
ここでは本当に興味深い部分があります。私は(ところで、働く)のIntelliJで次の手順を実行している場合:
val x = Action<String> {
}
良いですが、it
はまだです:
object : Action<String> {
override fun execute(t: String?) {
...
}
}
IntelliJのは私が行うとき、私が得る提案Convert to lambda
を、ポップ未解決。今、それを指定:
val x = Action<String> { input -> ... }
は、次のエラーを与えCould not infer type for input
とExpected no parameters
。誰かが何が起こっていると私を助けることができますか?
すべてがうまく動作します。たぶん古いKotlinプラグインのバージョンですか? – FWeigl