関数の引数に関数を渡すモドキ

関数の引数で関数渡したいなーってことあるだろ
あるんだよ

print calculate("add")          // 300
print calculate("multiply")     // 20000
print calculate("go_rendaaaah") // 500

function multiply(n, m)
    result = n * m
fend

function add(n, m)
    result = n + m
fend

function go_rendaaaah(n)
    result = n * 5
fend

function calculate(func)
    value1 = 100
    value2 = 200
    result = 0
    eval("result := " + func + "(value1, value2)")
fend

お、うまくいくっぽいぞ、関数が引数の数間違ったりしてたらどうなるんかなドキドキ
ってやった結果がこれですよ

print calculate("go_rendaaaah") // 500

別にエラー出すわけでもなく一つ目の引数だけ受けて値返してきたよ!?
eval()ちゃんはちゃんと調べてから使わないと危険な気がしてきた
いや、危険なのは知ってたけど再認識したよね

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中