Successfully reported this slideshow.
Your SlideShare is downloading. ×

Java使いにとっての関数

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 17 Ad

More Related Content

Slideshows for you (20)

Viewers also liked (20)

Advertisement

Similar to Java使いにとっての関数 (20)

Recently uploaded (20)

Advertisement

Java使いにとっての関数

  1. 1. Java使いにとっての関数 2014/2/3(Sat.) 第3回 Scala関西ビギナーズ
  2. 2. 自己紹介 • 名前:加藤 • Twitter:@amkt922 • 単身赴任で平日東京週末大阪なプログラマ(もともと江 坂) • 普段はJavaかphpで業務アプリを開発(Javascriptとかも触 りますが) • Scala力は底辺(今日は間違ってたらマサカリ投げてくだ さい)
  3. 3. 今日はJava使いの壁である Scalaの一人前に存在している関数 について話します。 ※あくまで個人の感想で個人差があります。
  4. 4. Javaの関数(ほんとはメソッド)はだいたい呼 び出して処理をします 呼び出して結果 を取得
  5. 5. ですが
  6. 6. Scalaでは関数を • 名前をつけずに定義できます (x:Int, y:Int) => x + y ←関数リテラルってやつ • 変数に格納できます val a = (x:Int, y:Int) => x + y ←a(1,2)と呼び出せます • 関数の引数として渡したり、関数から受け取ったりで きます someList.filter((x) => x > 0) ←高階関数ってやつ
  7. 7. まだ分かります
  8. 8.
  9. 9. Scalaとかの関数型言語では関数の種類で • 部分関数(Partial function)ってのがあります • 部分適用された関数(Partially applied function)ってのがあ ります • カリー化された関数(Curried function)ってのがあります。 • クロージャー(closure)って呼ばれる関数もあります。
  10. 10. これです!
  11. 11. いろんな関数があるところがJava プログラマにとっての壁です ※あくまで個人の感想で個人差があります。 なので一つずつ理解していきましょう
  12. 12. 部分関数 引数がhogeの時だけ hogehogeと表示する関 数をつくったりできま す hogeじゃないときは MatchErrorを吐きます • ある特定の引数のときのみ処理を行う関数 本当に役立つときもあるけど一 般には全関数を使ったほうがい いよ
  13. 13. 部分適用された関数 • 普通に関数を定義するが一部の引数だけ渡して呼び出したりで きる • 一部の引数だけ渡した結果、残りの引数を受け取る関数を戻り ノーマルに足し算する 値として受け取る 関数定義 第2引数は指定しない (_:Int) 戻り値はIntではなく関数 PartialSumが部分適用された関 数 “2”はy:Intの値のこと
  14. 14. カリー化された関数 • 複数の引数をとる代わりに常にちょうど一つの引数をとる関数 (すごいHaskellより) (x:Int)(y:Int)(z:Int)と 一つの引数をとるよう に定義 部分適用された関数を 取得することも可能
  15. 15. クロージャー • 引数で渡された変数以外の変数をさわれる関数のこと(ただしス コープ内の) (y+more)を実行する関数を戻 すouter関数を定義 more変数はouter関数の変数 outerを実行すると(y+more)を実 行する関数オブジェクトを取得 このオブジェクトがクロー ジャー Moreを参照するので答えは1001
  16. 16. 最後に こういういろいろある関数の種類と使い分け に最初につまずきました。 (いまだに何が便利なの?って思ってたりしま す) こんなところでつまずいている人もいるので、 Scalaを布教する際には参考にしていただけれ ば嬉しいです。
  17. 17. 以上 ありがとうございま した

×