IIFE(即時実行関数式)とは

ImmediatelyInvokedFunctionExpression(即時実行関数式)

すぐに実行できる関数式のことを指している。

ラムダ式のような印象を受けた。

書き方は以下のようになる。

javascriptの場合


;(() => 2 )()
;(() => console.log('hello'))()

実際にnodeで出力を確認してみる。

> ;(() => 2 )()
2
> ;(() => console.log('hello'))()
hello
>  ;((a) => a * 2 )(4)
8

めっちゃ即時やん(笑)

rubyの場合

rubyはProcやlambdaといった関数型プログラミング的書き方が存在している。

def proc_desu(a,b,c)
    Proc.new{
         a + b + c
      }
end

def lambda_desu(a,b,c)

    lambda { 
        a + b + c
    }
end

def iterator_desu(a,b,c)
    lambda { 
        a + b + c
    }
end

p '----Proc-----'
p proc_desu(1,2,3).call
p proc_desu('a','b','c').call

p '---lambda----'
p lambda_desu(1,2,3).call
p lambda_desu('a','b','c').call

p '----iterator----'
p iterator_desu(1,2,3).call
p iterator_desu('a','b','c').call

実行してみた。

% ruby proc.rb
"----Proc-----"
6
"abc"
"---lambda----"
6
"abc"
"----iterator----"
6
"abc"