C의 함수포인터 흉내내기 > 개발자팁

개발자팁

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

C의 함수포인터 흉내내기 정보

PHP 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>

추천
1

댓글 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
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);
전체 5,352
개발자팁 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT