Skip to content

Instantly share code, notes, and snippets.

Avatar

Jarno Walgemoed jwalgemoed

View GitHub Profile
View measuretimeContract.kt
@ExperimentalContracts
fun main(args: Array<String>) {
var assign: String
val time = measureTimeMillis {
assign = "Value Assigned"
}
println("$time ms. spent assigning: '$assign'")
}
@ExperimentalContracts
View measuretime.kt
fun main(args: Array<String>) {
var assign: String
val time = measureTimeMillis {
assign = "Value Assigned"
}
println("$time ms. spent assigning: '$assign!!'")
}
private inline fun measureTimeMillis(block: () -> Unit): Long {
val start = System.currentTimeMillis()
View contract.kt
contract {
returns(true) implies (this@isComplete != null)
}
View withcontract.kt
@ExperimentalContracts
fun User?.isComplete(): Boolean {
contract { returns(true) implies (this@isComplete != null) }
return this != null && this.isValid()
}
View usage2.kt
fun printUserDetails(user: User?) {
if(user.isComplete()) {
println("${user!!.name} ${user!!.email}")
}
}
View use.kt
fun printUserDetails(user: User?) {
if(user?.isValid()) {
println("${user.name} ${user.email}")
}
}
View userclass.kt
data class User(val name: String?, val email: String?) {
fun isValid() = !name.isNullOrBlank() && name.length > 3
&& !email.isNullOrBlank() && email.length > 3
}
View method.java
var variable = returnValue(); // Type is inferred from the return type of the method
// Method declaration
public String returnValue() {
return "w00p";
}
View example3.java
var strings = Arrays.asList("a", "b", "c");
for(var str: strings) {
System.out.println(str);
}
View interface.java
// We can explicitly work against interfaces
List<String> list = new ArrayList(); // type: List<String>
// Using var, we can't do this without casting
var list = new ArrayList<String>(); // Inferred type ArrayList<String>
var list = (List)new ArrayList<String>(); // Inferred type List<String>
You can’t perform that action at this time.