2010-06-24 6 views
0
opts = GetoptLong.new(
    [ '--help', '-h', GetoptLong::NO_ARGUMENT ], 
    [ '--repeat', '-n', GetoptLong::REQUIRED_ARGUMENT ], 
    [ '--name', GetoptLong::OPTIONAL_ARGUMENT ] 
) 

나는 이런 종류의 선언을 optlong에 대해 가지고있다. opts가 배열 또는 해시로 작동하는지, opts의 값이 무엇인지는 누구에게도 알 수 있습니까? 한 가지 더루비에서 getoptlog를 사용하는 방법

opts.each do |opt,args| 

opt 및 args의 valuse는 무엇입니까?

답변

0

옵트을 저를 도와주세요, 인수 :

선택 하는 실제 옵션이 도움/반복/이름이 될 것입니다 귀하의 경우, 이는 전달됩니다. 인수는 인수의 값입니다.

는 예를 들어, 당신이

--name의 미트를 주면 당신은

는 또한,이 옵션은 해시입니다 가능성이 높습니다 아 미트 = 인수 값을 얻을 것입니다.

NO_ARGUMENT : 그냥 '-h'/ '- help'를 사용하지만 아무런 인수도 사용하지 않습니다.

REQUIRED_ARGUMENT : 지정된 인수가 필요합니다. 예를 들어 '--repeat'는 거부됩니다.

OPTIONAL_ARGUMENT : 옵션에 인수를 제공 할 수도 있고하지 않을 수도 있습니다. 예를 들어, ls를 생각해보십시오. 'ls'라고 말하면 디렉토리 내용을 나열하거나 'ls.'/ 'ls'라고 말할 수 있습니다 ...

EDIT : Getopt에 대한 간략한 설명은 여기를 참조하십시오. . http://ruby.about.com/od/advancedruby/a/commandoptions.htm

+0

감사합니다 rmk 하지만 한 가지 더 comaand 라인 인수 lke -n (이름을 가정 할 때처럼) -n sachin 그러면 sachin은 args의 값인 다음 opt 값의 값인가요 ??? –

+0

나는 opts [ "name"] = - n과 opt = repeat와 arg = -n 그리고 whwn u가 -n amit와 같은 cmd 행 인수를 넘겼다 고 생각합니다. 그러면 모든 것이 opts와 같습니다 [ "name"] = amit is 그게 내가 알고 싶지 않아 ?? –

+0

네, 맞습니다. 루비에서는 해시 값을 opts [: name] 또는 opts [ "name"]와 같은 문자열/기호로 가져올 수 있습니다. 그것은 비록 기호를 사용하여 좋네요. – rmk

0

opt는 '긴'버전의 옵션을 보유합니다. arg는 해당 인수를 보유합니다. 나는 보통 getoptlong을 사용할 때 아래 코드와 비슷한 것을 씁니다. 당신이 -n 8 foo.rb 입력하면 '--repeat'분기가 실행될 때

opts.each do |opt, arg| 
    case opt 
    when '--help' 
    RDoc::usage 
    exit(0) 
    when '--repeat' 
    puts "--repeat argument was #{arg}" 
    end 
end 

그래서, 인수 8을 개최한다. 희망이 도움이

+0

고맙지 만 여기에 하나 더있는 것은 배열이나 해시 또는 클래스의 간단한 객체 getoptlong이 커맨드 라인에 있어야하는 이유라고 생각합니다. 왜 우리는 옵션의 '긴'버전을 제공하지 않는지 –

+0

무슨 뜻인지 잘 모르겠습니다. 두려워. 당신은 더 구체적 일 수 있습니까? – reprazent74

+0

나는 opts의 내용을 찾는 방법을 알고 싶습니다. 찾을 방법이 있습니까? –

관련 문제