필자는 C와 Matlab 프로그래머가 Julia로 이동하면서 함수 옵션이 전달 될 때 어떻게 표시되는지 이해하려고 노력하고 있습니다.줄리아에서 열거 형 함수 인수를 전달하는 방법은 무엇입니까?
가끔씩 함수는 제한된 함수 다른 옵션의 수. C에서는 다음과 같이 보일 수 있습니다.
enum Options{
OPTION_1,
OPTION_2
};
// Other arguments omitted
void foo(..., enum Options option){
switch(option){
case OPTION_1:
// Do something
break;
case OPTION_2:
// Do something else
break;
}
}
줄리아에서 어떻게 구조화할지 잘 모르겠습니다. 내 첫 번째 시도는 추상 형식의 계층 구조를 사용하고 그 다음에 결정을 내리기 위해 단일 형식을 허용하는 함수를 사용했습니다. 다음 코드를 참조하십시오.
abstract Options
abstract Option_1 <: Options
abstract Option_2 <: Options
function foo{T<:Options}(..., ::Type{T})
if isa(Option_1, Type{T}
//Do something
elseif isa(Option_2, Type{T})
//Do something else
end
end
그러나 이것은 매우 이상한 방법으로 문제에 접근하는 것처럼 보입니다. 함수 입력을 제어하기위한 유형을 만드는 것은 이상하게 느껴집니다.
또한 명확히하기 위해 나는 이것이 Julia의 일반적인 매개 변수 방법으로 해결할 수있는 해결책이라고 생각하지 않습니다. 사용자가 플래그 (예 : 버전 1 또는 버전 2 실행)를 지정할 수 있도록 찾고 있는데, 입력 유형에 따라 다른 기능을 갖고 있지 않습니다.
도움 주셔서 감사합니다.
알았어, 고마워. 그것은 여전히 나를위한 타입 시스템의 남용처럼 느껴지 겠지만, 아마도 저는 Julia에서 Julia를 프로그래밍하려고합니다. C를 모방하지 않으려 고합니다. – Glenn