op = {a:Int,b:Int,c:Int -> a+b+c} calc(1,2,3,op) // 6 } fun calc(a: Int, b: Int, c: Int, op: (Int, Int, Int) -> Int): Int { return op(a, b, c) } public static void main(String[] args) { TriFunction<Integer, Integer, Integer, Integer> op = (a, b, c) -> a+b+c; calc(1, 2, 3, op); //6 } public static Integer calc(Integer a,Integer b,Integer c, TriFunction<Integer, Integer, Integer, Integer> op){ return op.apply(a,b,c); } @FunctionalInterface interface TriFunction<A, B, C, R>{ R apply(A a, B b, C c); } • Javaでは3つ受け取る関数型インタフェース定義が必要 Kotlin Java TriFunctionを自作 定義したラムダ式の型 を指定 Kotlinは関数自体が オブジェクト