티스토리 뷰
728x90
출처
함수를 인자로 호출하기
JavaScript에서 함수를 호출할때 함수를 변수처럼 인자로 전달하는 방법을 문의가 있어서 구현 시도해보았습니다.
결론을 말하자면 완벽하게 micri:bit에서는 함수를 인자로 호출은 되지만 인자나 반환값이 없는 함수는 가능힙니다.
편법으로 전달되는 함수의 인자와 반환값을 전역변수로 선언하고 전역변수를 사용하는 방식으로 구현해보았습니다.
함수를 인자로 전달하는 자료형은 Action 타입을 사용하시면 됩니다.
일반 JavaScript 소스
var fc = function (x) { return Math.sin(x) - Math.cos(x) + (1/2) }; function bisection(f,a,b,etol){ console.log("f(a)= "+f(a)+", f(b)= "+f(b)+", f(a)*f(b)= "+f(a)*f(b)); var a_n = a; var b_n = b; var e = 100; var n = 0; var c_n = (a_n + b_n)/2; while (n < 30){ n++; if ((b_n - a_n) > etol){ if (f(c_n)*f(a_n) < 0){ a_n = a_n; b_n = c_n; e = c_n - a_n; } else if (f(c_n)*f(b_n) < 0){ a_n = c_n; b_n = b_n; e = b_n - c_n; } } else if ((b_n - a_n) < etol){ var arr = [a_n, b_n, c_n, e]; return arr; } if (n == 30){ var arr = [a_n, b_n, c_n, e]; return arr; } } } bisection(fc, 0, 1, 0.0001)
micro:bit JavaScript 소스
let param1: number; // 첫번째 파라미터용 전역변수 let result: number; // 반환값을 위한 전역변수 let fc = function () { result = Math.sin(param1) - Math.cos(param1) + (1 / 2); }; // 함수 변수로 선언 function bisection(f: Action, a: number, b: number, etol: number): number[] { let a_n = a; let b_n = b; let e = 100; let n = 0; let c_n = (a_n + b_n) / 2; while (n < 30) { n++; if ((b_n - a_n) > etol) { // -- f(c_n) param1 = c_n; f(); let result_c_n = result; // -- f(a_n) param1 = a_n; f(); let result_a_n = result; // -- f(b_n) param1 = b_n; f(); let result_b_n = result; if (result_c_n * result_a_n < 0) { a_n = a_n; b_n = c_n; e = c_n - a_n; } else if (result_c_n * result_b_n < 0) { a_n = c_n; b_n = b_n; e = b_n - c_n; } } else if ((b_n - a_n) < etol) { let arr = [a_n, b_n, c_n, e]; return arr; } if (n == 30) { let arr = [a_n, b_n, c_n, e]; return arr; } } let arr = [0,0,0,0]; return arr; } let resultArray = bisection(fc, 0, 1, 0.0001); basic.showNumber(resultArray[0]); //basic.showNumber(resultArray[1]); //basic.showNumber(resultArray[2]); //basic.showNumber(resultArray[3]);
댓글
300x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- KOBA
- MySQL
- sas2009
- ble
- flex
- oracle
- android
- NDK
- BPI-M4
- Spring MVC
- 동경
- Delphi
- 튜닝쇼 2008
- 전예희
- SAS
- Linux
- 서울오토살롱
- Mac
- Java
- ffmpeg
- JavaScript
- Delphi Tip
- Xcode
- 송주경
- 레이싱모델 익스트림 포토 페스티벌
- Spring
- ubuntu
- koba2010
- 일본여행
- 지스타2007
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함