2013-08-28 11 views
5

मैं पतुरिया उपयोग कर रहा हूँ आदेश पंक्ति तर्क पार्स करने के लिए, और मैं filename1 और नीचे filename2 जैसे कुछ आवश्यक स्थितीय तर्क जोड़ना चाहते हैं:मैं ट्रोलॉप के साथ सकारात्मक तर्क कैसे बना सकता हूं?

usage: my_script [--help] [--some-option VALUE] [--some-flag] filename1 filename2 

मैं कैसे पतुरिया के साथ ऐसा कर सकता हूं?

+0

आप कैसे पतुरिया साथ स्थितीय तर्क का उपयोग करने के लिए बाहर मिला? – dusan

+0

@dusan कोई भाग्य नहीं। – Dean

उत्तर

3

ट्रोलॉप पार्सिंग विकल्पों के बारे में है - जो चीजें मौजूद हो सकती हैं या नहीं भी हो सकती हैं।

एक आवश्यक स्थितित्मक तर्क एक विकल्प नहीं है। अपने स्थितित्मक तर्कों तक पहुंचने के लिए, बस argv देखें। यदि आप विकल्पों के मिश्रण और आवश्यक स्थितित्मक तर्कों का उपयोग करते हैं, तो ट्रोलॉप वैकल्पिक सामग्री को अलग करने का ख्याल रखेगा, और उस स्थिति में एआरजीवी छोड़ देगा जहां इसमें केवल वही सामान शामिल है, जिनकी आप परवाह करते हैं।

आप इस उदाहरण कोड चलाते हैं:

[~/tbear/bin]$ ./t.rb 
opts: {:monkey=>false, :name=>nil, :num_limbs=>4, :help=>false} 
ARGV: [] 

[~/tbear/bin]$ ./t.rb arg1 
opts: {:monkey=>false, :name=>nil, :num_limbs=>4, :help=>false} 
ARGV: ["arg1"] 

[~/tbear/bin]$ ./t.rb -m arg1 
opts: {:monkey=>true, :name=>nil, :num_limbs=>4, :help=>false, :monkey_given=>true} 
ARGV: ["arg1"] 

सूचना कैसे ARGV उदाहरण 2 और उदाहरण 3.

4

पतुरिया में एक ही है:

#!/usr/bin/env ruby 

require 'trollop' 

opts = Trollop::options do 
    opt :monkey, "Use monkey mode"     # flag --monkey, default false 
    opt :name, "Monkey name", :type => :string  # string --name <s>, default nil 
    opt :num_limbs, "Number of limbs", :default => 4 # integer --num-limbs <i>, default to 4 
end 

puts "opts: #{opts}" 
puts "ARGV: #{ARGV}" 

यहाँ आप क्या मिलेगा है आपको leftovers विशेषता देता है, जो provides the same information है। यहाँ कैसे आप इसे उपयोग करेंगे:

#!/usr/bin/env ruby 

require 'trollop' 
require 'pp' 

p = Trollop::Parser.new do 
    opt :monkey, 'Use monkey mode'     # flag --monkey, default false 
    opt :name, 'Monkey name', :type => :string  # string --name <s>, default nil 
    opt :num_limbs, 'Number of limbs', :default => 4 # integer --num-limbs <i>, default to 4 
end 

p.parse 

puts 'Leftovers:' 
pp p.leftovers 
puts 'ARGV:' 
pp ARGV 

यहाँ परिणाम है:

> ruby se_01.rb foo blarb -m 
Leftovers: 
["foo", "blarb"] 
ARGV: 
["foo", "blarb"] 
संबंधित मुद्दे