C의 함수포인터 흉내내기

<?php

function plus($a, $b) { 

return $a + $b;

}

 

function minus($a, $b) {

return $a - $b;

}

 

function multiply($a, $b) {

return $a * $b;;

}

 

function division($a, $b) {

return $a / $b;

 

function calc($type, $a, $b) {

    return call_user_func($type, $a, $b);

}

  

echo calc('plus', 1, 2), '<br>';

echo calc('minus', 1, 2), '<br>';

echo calc('multiply', 1, 2), '<br>';

echo calc('division', 1, 2), '<p>';

?> 

 

<script>

// javascript  

function plus(a, b) {

return a + b;

}

 

function minus(a, b) {

return a - b;

}

 

function multiply(a, b) {

return a * b;

}

 

function division(a, b) {

return a / b;

}

  

function calc(type, a, b) {

    return type(a, b);

}

 

document.write( calc(plus, 1, 2) + '<br>' );

document.write( calc(minus, 1, 2) + '<br>' );

document.write( calc(multiply, 1, 2) + '<br>' );

document.write( calc(division, 1, 2) + '<br>' );

</script>

|

댓글 4개

슈와이 님, 좋은 팁 감사합니다.

근데, 한 가지 궁금한 게요... 아래처럼 출력 코드 사용하는 것과 뭔 차이인가요?
굳이 번거롭게 calc 함수를 더 만드는 이유가 궁금합니다.


echo plus(1, 2);
echo '<br />';
echo minus(1, 2);
echo '<br />';
echo multiply(1, 2);
echo '<br />';
echo division(1, 2);
// php
function main($type) {
$arr = array('test1', 'test2', 'test3');
echo '게시판입니다.';
$type($arr);
}

function latest1($arr) {
shuffle($arr);
foreach($arr as $v) {
echo "<h1>$v</h1>";
}
}

function latest2($arr) {
rsort($arr);
foreach($arr as $v) {
echo "<h3>$v</h3>";
}
}

echo main('latest1');
echo '<br>';
echo main('latest2');
?>

// javascript
<form name="f">
<input type="text" name="a" value="1">
<input type="text" name="op" value="+">
<input type="text" name="b" value="2"> =
<input type="text" name="c" value="">
<input type="button" onclick="main(this.form)" value="계산" >
</form>

<script>
function plus(a, b) {
return a + b;
}

function minus(a, b) {
return a - b;
}

function multiply(a, b) {
return a * b;
}

function division(a, b) {
return a / b;
}

function calc(type, a, b) {
return type(a, b);
}


function main(f) {
var func = null;
switch(f.op.value) {
case '+':
func = plus;
break;
case '-':
func = minus;
break;
case '*':
func = multiplylus;
break;
case '/':
func = division;
break;
}

f.c.value = calc(func, Number(f.a.value), Number(f.b.value));
}


요약
main함수를 자동차로 보자면 함수포인터에 사용되는 함수는
차의 부품으로 보고 필요할때 부품만 교체한다는 개념으로 이해하시면
될거 같습니다.


관련 사이트
http://www.joinc.co.kr/w/Site/C/Documents/FunctionPointer
http://norux.me/8
이제 좀 이해가 되네요.ㅎ 자세히 설명해주셔서 감사합니다.
[http://blog-imgs-44.fc2.com/w/a/r/wareureu/227.gif]
echo call_user_func('plus', 1, 2);
echo '<br />';
echo call_user_func('minus', 1, 2);
echo '<br />';
echo call_user_func('multiply', 1, 2);
echo '<br />';
echo call_user_func('division', 1, 2);
댓글을 작성하시려면 로그인이 필요합니다. 로그인

개발자팁

개발과 관련된 유용한 정보를 공유하세요. 질문은 QA에서 해주시기 바랍니다.

+
분류 제목 글쓴이 날짜 조회
PHP 9년 전 조회 2,122
PHP 9년 전 조회 4,531
PHP 9년 전 조회 2,799
PHP 9년 전 조회 2,105
PHP 9년 전 조회 2,567
PHP 9년 전 조회 2,243
PHP 9년 전 조회 2,673
PHP 9년 전 조회 2,163
PHP 9년 전 조회 2,549
PHP 9년 전 조회 2,252
PHP 9년 전 조회 2,364
PHP 9년 전 조회 2,204
PHP 9년 전 조회 2,541
PHP 9년 전 조회 2,675
PHP 9년 전 조회 3,281
PHP 9년 전 조회 2,382
PHP 9년 전 조회 2,411
PHP 9년 전 조회 2,381
PHP 9년 전 조회 2,774
PHP 9년 전 조회 2,339
PHP 9년 전 조회 2,035
PHP 9년 전 조회 5,220
PHP 9년 전 조회 1,989
PHP 9년 전 조회 2,117
PHP 9년 전 조회 2,157
기타 9년 전 조회 2,970
PHP 9년 전 조회 2,317
PHP 9년 전 조회 2,472
PHP 9년 전 조회 2,888
PHP 9년 전 조회 2,601
🐛 버그신고