2015-05-23 23:40:55 -04:00
|
|
|
import io:*
|
|
|
|
|
|
2015-06-05 00:34:24 -04:00
|
|
|
obj Traited(Traits) {}
|
|
|
|
|
|
2015-05-25 12:11:45 -04:00
|
|
|
fun funcID<T>(genFun: fun():T):T {
|
|
|
|
|
return genFun()
|
|
|
|
|
}
|
|
|
|
|
fun retInt():int {
|
|
|
|
|
return 9
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fun doThePrint<T>(func: fun(T):void):void {
|
|
|
|
|
func(10)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fun printInt(it:int):void {
|
|
|
|
|
println(it)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2015-05-23 23:40:55 -04:00
|
|
|
fun ptrFn<T>(ptr: T*):void {
|
|
|
|
|
println(*ptr)
|
|
|
|
|
}
|
|
|
|
|
|
2015-06-05 00:34:24 -04:00
|
|
|
fun traitAware<T>(it:T*):void {
|
|
|
|
|
println("Does not have Traits")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fun traitAware<T(Traits)>(it:T*):void {
|
|
|
|
|
println("Does have Traits")
|
|
|
|
|
}
|
|
|
|
|
|
2015-05-23 23:40:55 -04:00
|
|
|
fun main():int {
|
|
|
|
|
var a = 8
|
|
|
|
|
ptrFn(&a)
|
2015-05-25 12:11:45 -04:00
|
|
|
println(funcID(retInt))
|
|
|
|
|
doThePrint(printInt)
|
2015-06-05 00:34:24 -04:00
|
|
|
var t:Traited
|
|
|
|
|
traitAware(&t)
|
|
|
|
|
traitAware(&a)
|
2015-05-23 23:40:55 -04:00
|
|
|
return 0
|
|
|
|
|
}
|
|
|
|
|
|