논 스위치 args 계산을위한 구문 설탕?루비 syntactic 설탕 코어 전용 arg 파싱
argn = 0
ARGV.each do |arg|
mission = Mission_DB.new unless mission
if(arg.match(/^\-.*=/)) then
fsav = arg.split('=')[1] if arg.match(/\-save=/)
skip = arg.split('=')[1].split(',') if arg.match(/\-skip=/)
mission.mission = arg.split('=')[1].downcase if arg.match(/\-mission=/)
else
argn += 1
mission.parseP1SCLRV(arg) if argn == 1
template = arg if argn == 2
mission.parseP1SCLRVPLV(arg) if argn == 3
mission.parseDbUserLimits(arg) if argn == 4
end
end
난 단지 직관적 인 구문 (코멘트를하지 않고 읽기를) 구문 분석 ARG 재사용, 깨끗한 코어를 찾기 위해 노력했습니다. 이것은 나쁘지는 않지만 그다지 좋지 않습니다.
- 나는 각각의 스위치 다음에 경우 /-.*=/
- 이 each_with_index은 정말 스위치는 어디 내장 될 수 있기 때문에 무엇을 찾고 있어요 달성하지 않습니다
- 내가 싫어하는에서 argN 쓰레기를 싫어 전환되지 않은 인수 내에서
우리는 "깨끗하고 핵심적이고 직관적 인"요구 사항을 충족하는 경우 완전히 자유롭게 변경할 수 있습니다.
감사 건배 --Reed
optparse에 소개해 주셔서 감사합니다. 전에는 보지 못했습니다. 나의 도전은 스크립트가 궁극적으로 비 코더 유형으로가는 것이므로 가능한 한 구문 론적으로 단순하게 유지해야한다는 것이다. 연산자는 이해하지 못하는 코드를 실행하는 것을 좋아하지 않지만 코딩을 배울 필요가 없습니다. –
예를 들어 +1 – knut
@Reed, 해당 제약 조건을 사용하여 모든 스위치 인수를 제거하고 위치 인수 만 사용하십시오. 다음은'foo = ARGV.shift','bar = ARGV.shift' 등입니다. 필자가 작성한 것은 optparse를 사용하는 것처럼 코드이다. "비 코더 (non coder)"는 아무런 기회도 없습니다. 그 문제에 대해 "비 코더"가 셸 스크립팅에 익숙하다면 스크립트는 셸 스크립트로 작성해야합니다. –