Kotlin - Append to StringBuilder using “+” “plus” instead of append() method
In Kotlin you can easily override operator. I will show simple example how can this help you to write more readable code.
At first we will override “plus” operator on for StringBuilder class
operator fun StringBuilder.plus(str: String): StringBuilder {append(str)returnthis}
If you define this function as private. It will be accessible only in file, where it is defined. Or public and then it can be used anywhere in project.
And from this code:
sb.append("function ").append(generatedClassName).append("() {").append("\n")
functions.forEach{ function: Function ->
sb.append(indent).append("this.").append(function.name).append(" = undefined;").append("\n")}
sb.append("}").append("\n")
sb.append("var ").append(name).append(" = new ").append(generatedClassName).append("();").append("\n")
we can remove all ‘append’ words and we get this code: =>
sb +"function "+ generatedClassName +"() {"+"\n"
functions.forEach{ function: Function ->
sb + indent +"this."+ function.name +" = undefined;"+"\n"}
sb +"}"+"\n"
sb +"var "+ name +" = new "+ generatedClassName +"();"+"\n"
ALE pozor! - build nejde spustit, pokud už předtím daemon běží
v tom potřeba je potřeba ho vypnout gradlew.bat --stop (to zastaví daemony)
Kam jde dát breakpoint:
jde do buildSrc
nešlo mi dát přímo do tasku v build.gradle.kts
nešlo mi dát do metody v build.gradle.kts (to v groovy gradlu fungovalo)
Parallelní build
používáme parallelní build java org.gradle.parallel=true
Proto pozor tasky, které na sobě nejsou závislé se spustí parallelně to znamená: gradlew test uploadTestResults zde je nutné mít nastavenou závislost mezi tasky např:
tasks {val test by tasks.getting
val uploadTestResults by tasks.creating{dependsOn(test)
doLast {... process test resutls ...}}}
exclude task
V případě, vyjímečně chci spustit task bez jeho závislostí (např. když ho píšu) lze
gradlew uploadTestResults -x test - spustí ‘uploadTestResults’ bez tasku ‘test’
V konfiguraci tasku jde upravit jakékoliv parametry např:
V build.gradle.kts je k dispzici variabla logger.
Gradle přidává novou logovací uroveň lifecycle a quiet error, quiet, warning, lifecycle, info, debug
Výchozí úroven logovaní NENI info, ale LIFECYCLE !!!
gradlew <myTask> --info - spusti příkaz s urovní info