fork download
  1. importPackage(java.io);
  2. importPackage(java.lang);
  3.  
  4. // ※これを、System.out.println だと思ってください。
  5. function println(str) {
  6. System.out.println(str)
  7. }
  8.  
  9. // 変数に関数を値として代入する。
  10. // こっちは変数に関数を定義して代入。Javaの ラムダ式 s -> System.out.println(s) と同じイメージ。
  11. var printStr1 = function(s){println(s)}
  12. // こっちは定義済みの関数を代入するイメージ。メソッド参照, System.out::println と同じイメージ。
  13. var printStr2 = println
  14.  
  15. // printStr1, printStr2どちらも関数なので、`変数(引数)` の形式で関数の実行ができる。
  16. // Javaだと、ConsumerやFunctionみたいなオブジェクトとして定義されるので、printStr.apply("hello")みたいにしないといけない。
  17. printStr1("hello1")
  18. printStr2("hello2")
  19.  
  20.  
  21. // 関数を引数に取る関数の例
  22. function myForEach(list, func) { // funcは、javaだと、Consumer<T>みたいに引数の数と戻り値の有無に応じたインターフェース型にする。
  23. for(var i = 0; i<list.length;i++) {
  24. func(list[i]) // javaなら、func.apply(list.get(i))
  25. }
  26. }
  27.  
  28. // 関数を代入した変数を渡すこともできるし.
  29. myForEach([1,2,3], printStr1);
  30.  
  31. // ラムダ式(無名関数)を渡すこともできるし、
  32. myForEach([4,5,6], function(i){println(i)}) // Javaなら、 i -> System.out.println(i)
  33.  
  34. // 関数の名前で、関数そのものを渡すこともできる
  35. myForEach([7,8,9], println) // Javaなら、 System.out::println でメソッド参照と同じ。
  36.  
Success #stdin #stdout 0.46s 2576384KB
stdin
1
2
10
42
11
stdout
hello1
hello2
1.0
2.0
3.0
4.0
5.0
6.0
7.0
8.0
9.0