SlideShare a Scribd company logo
Java使いにとっての関数
2014/2/3(Sat.)
第3回 Scala関西ビギナーズ
自己紹介
• 名前:加藤
• Twitter:@amkt922
• 単身赴任で平日東京週末大阪なプログラマ(もともと江
坂)
• 普段はJavaかphpで業務アプリを開発(Javascriptとかも触
りますが)
• Scala力は底辺(今日は間違ってたらマサカリ投げてくだ
さい)
今日はJava使いの壁である
Scalaの一人前に存在している関数
について話します。

※あくまで個人の感想で個人差があります。
Javaの関数(ほんとはメソッド)はだいたい呼
び出して処理をします

呼び出して結果
を取得
ですが
Scalaでは関数を
• 名前をつけずに定義できます
(x:Int, y:Int) => x + y ←関数リテラルってやつ
• 変数に格納できます
val a = (x:Int, y:Int) => x + y ←a(1,2)と呼び出せます
• 関数の引数として渡したり、関数から受け取ったりで
きます
someList.filter((x) => x > 0) ←高階関数ってやつ
まだ分かります
次
Scalaとかの関数型言語では関数の種類で
• 部分関数(Partial function)ってのがあります
• 部分適用された関数(Partially applied function)ってのがあ
ります
• カリー化された関数(Curried function)ってのがあります。
• クロージャー(closure)って呼ばれる関数もあります。
これです!
いろんな関数があるところがJava
プログラマにとっての壁です
※あくまで個人の感想で個人差があります。

なので一つずつ理解していきましょう
部分関数
引数がhogeの時だけ
hogehogeと表示する関
数をつくったりできま
す
hogeじゃないときは
MatchErrorを吐きます

• ある特定の引数のときのみ処理を行う関数

本当に役立つときもあるけど一
般には全関数を使ったほうがい
いよ
部分適用された関数
• 普通に関数を定義するが一部の引数だけ渡して呼び出したりで
きる
• 一部の引数だけ渡した結果、残りの引数を受け取る関数を戻り
ノーマルに足し算する
値として受け取る
関数定義
第2引数は指定しない
(_:Int)
戻り値はIntではなく関数
PartialSumが部分適用された関
数
“2”はy:Intの値のこと
カリー化された関数
• 複数の引数をとる代わりに常にちょうど一つの引数をとる関数
(すごいHaskellより)
(x:Int)(y:Int)(z:Int)と
一つの引数をとるよう
に定義
部分適用された関数を
取得することも可能
クロージャー
• 引数で渡された変数以外の変数をさわれる関数のこと(ただしス
コープ内の)
(y+more)を実行する関数を戻
すouter関数を定義
more変数はouter関数の変数

outerを実行すると(y+more)を実
行する関数オブジェクトを取得
このオブジェクトがクロー
ジャー
Moreを参照するので答えは1001
最後に
こういういろいろある関数の種類と使い分け
に最初につまずきました。
(いまだに何が便利なの?って思ってたりしま
す)
こんなところでつまずいている人もいるので、
Scalaを布教する際には参考にしていただけれ
ば嬉しいです。
以上
ありがとうございま
した

More Related Content

What's hot (20)

PDF
Dark vol4 for_slideshare
ara_ta3
 
PPTX
おっさんES6/ES2015,React.jsを学ぶ
dcubeio
 
PPTX
Scala勉強会 初心者向けハンズオン前編
takeuchi-tk
 
PDF
Scala警察のすすめ
takezoe
 
PPTX
Scalaで学ぶ関数型言語超入門
yujiro_t
 
PDF
Scalaノススメ
Yasuyuki Maeda
 
PDF
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
Kazuhiro Sera
 
PDF
Scala勉強会_2014_11_18
Shuya Tsukamoto
 
KEY
Beginners Scala in FAN 20121009
Taisuke Shiratori
 
PDF
Scala is-unscared
Kota Mizushima
 
PDF
こわくないScala
Kota Mizushima
 
PDF
Scalaz-StreamによるFunctional Reactive Programming
Tomoharu ASAMI
 
PDF
Phantom Type in Scala
Yasuyuki Maeda
 
PPTX
Scala.jsはじめました!
K Kinzal
 
PPTX
Scala.jsはじめました?
K Kinzal
 
PDF
Scalaプログラミング・マニアックス
Tomoharu ASAMI
 
PPTX
Developing an Akka Edge4-5
saaaaaaki
 
PPTX
Developing an Akka Edge1-3
saaaaaaki
 
PDF
Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
Tomoharu ASAMI
 
PDF
型無しラムダ計算―OCamlによる実装―
Proktmr
 
Dark vol4 for_slideshare
ara_ta3
 
おっさんES6/ES2015,React.jsを学ぶ
dcubeio
 
Scala勉強会 初心者向けハンズオン前編
takeuchi-tk
 
Scala警察のすすめ
takezoe
 
Scalaで学ぶ関数型言語超入門
yujiro_t
 
Scalaノススメ
Yasuyuki Maeda
 
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
Kazuhiro Sera
 
Scala勉強会_2014_11_18
Shuya Tsukamoto
 
Beginners Scala in FAN 20121009
Taisuke Shiratori
 
Scala is-unscared
Kota Mizushima
 
こわくないScala
Kota Mizushima
 
Scalaz-StreamによるFunctional Reactive Programming
Tomoharu ASAMI
 
Phantom Type in Scala
Yasuyuki Maeda
 
Scala.jsはじめました!
K Kinzal
 
Scala.jsはじめました?
K Kinzal
 
Scalaプログラミング・マニアックス
Tomoharu ASAMI
 
Developing an Akka Edge4-5
saaaaaaki
 
Developing an Akka Edge1-3
saaaaaaki
 
Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
Tomoharu ASAMI
 
型無しラムダ計算―OCamlによる実装―
Proktmr
 

Viewers also liked (20)

PDF
15 reasons why you can call yourself a traveller
HostelsClub.com
 
PDF
Pdabc831
dylaraf
 
PPTX
Last presentationaug
tbenn002
 
PPTX
Onesubject fortyphotos
Kara Wilson Smith
 
PDF
ICANN54 İşletme Özeti
ICANN
 
PDF
Travel tips for havana
HostelsClub.com
 
PDF
Brazil besides carnival
HostelsClub.com
 
PDF
ICANN 51 Business Digest
ICANN
 
PDF
ICANN 52 シンガポール ビジネスダイジェスト
ICANN
 
PDF
لوس أنجلوس ملخص الأعمال ICANN 51
ICANN
 
PDF
Social Media 101
PublicLibrarySG
 
PPT
School work-transition assignment-02
Silvia Eme de Be
 
PDF
ICANN 52 Singapur İşletme Özeti
ICANN
 
PDF
Ten minute introdction to ICANN for Business
ICANN
 
PDF
ICANN55 Boletim informativo empresarial
ICANN
 
PDF
ICANN 第 52 届 新加坡会议 商业文摘
ICANN
 
PDF
ICANN 50 Business Digest_Chinese
ICANN
 
PDF
ICANN第47届 德班会议 商业文摘
ICANN
 
PDF
ICANN 50 Business Digest
ICANN
 
PDF
ICANN 53 ビジネスダイジェ
ICANN
 
15 reasons why you can call yourself a traveller
HostelsClub.com
 
Pdabc831
dylaraf
 
Last presentationaug
tbenn002
 
Onesubject fortyphotos
Kara Wilson Smith
 
ICANN54 İşletme Özeti
ICANN
 
Travel tips for havana
HostelsClub.com
 
Brazil besides carnival
HostelsClub.com
 
ICANN 51 Business Digest
ICANN
 
ICANN 52 シンガポール ビジネスダイジェスト
ICANN
 
لوس أنجلوس ملخص الأعمال ICANN 51
ICANN
 
Social Media 101
PublicLibrarySG
 
School work-transition assignment-02
Silvia Eme de Be
 
ICANN 52 Singapur İşletme Özeti
ICANN
 
Ten minute introdction to ICANN for Business
ICANN
 
ICANN55 Boletim informativo empresarial
ICANN
 
ICANN 第 52 届 新加坡会议 商业文摘
ICANN
 
ICANN 50 Business Digest_Chinese
ICANN
 
ICANN第47届 德班会议 商业文摘
ICANN
 
ICANN 50 Business Digest
ICANN
 
ICANN 53 ビジネスダイジェ
ICANN
 
Ad

Recently uploaded (7)

PDF
PostgreSQL18新機能紹介(db tech showcase 2025 発表資料)
NTT DATA Technology & Innovation
 
PDF
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
PDF
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
PDF
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
PDF
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
PDF
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
PDF
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
PostgreSQL18新機能紹介(db tech showcase 2025 発表資料)
NTT DATA Technology & Innovation
 
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
Ad

Java使いにとっての関数