안녕하세요:)
설명서를 보면 함수에 입력할 수 있는 값의 종류가 여러가지일 때가 있는데
제가 만들 때는 불가능할까요?
예를 들자면 subMat함수는
설명서상에 subMat(Matrix1[,startRow][,startCol][,endRow][,endCol])로 되어있습니다
이경우 subMat함수는 총 5가지 변수를 입력할 수 있는데 경우에 따라 입력하지 않아도 되는 식입니다.
함수를 정의할 때에도 이와같은 기능을 추가할 수 있을까요?
추천인
Comment 5
-
-
-
1. 인수를 list (또는 string) 형식으로 입력받고,
인수를 분석해서 분기 처리
2. 기본만 입력받고,
나머지는 번거롭지만 request 형식으로 입력
두가지 방법이 있을 것 같네요.
-
-
-
감사합니다:) 리스트방식 활용해 봐야 겠어요!!
-
-
-
1) 무작정 도전
Define flex1(a,b,c)= Func :If b="" Then : b:=0 :EndIf : : If c="" Then : c:=0 a :EndIf : Return+b+c :EndFunc
이렇게 정의하고 테스트 해보면
flex1(1) "Error: Too few arguments"flex1(1,2) "Error: Too few arguments"flex1(1,2,3) 6
-
-
-
2) 인수를 리스트로 처리
Define flex2(args)= Func :Local a,b,c,i,d :d:=0 : :For i,1,dim(args) : d:=d+args[i] :EndFor :Return d :EndFunc
flex2({1}) 1flex2({1,2}) 3flex2({1,2,3}) 6
-
그냥은 안되는 것 같습니다.
http://tibasicdev.wikidot.com/forum/t-371922/optional-arguments
확실치는 않습니다.