यह काफी अच्छी तरह से काम करता है - बस आश्चर्य हुआ कि क्या इसे कम करने के लिए कोई सुधार है?कोई तर्क नहीं अगर stdin के खिलाफ चलाने के लिए स्क्रिप्ट; अन्यथा इनपुट फ़ाइल = एआरजीवी [0]
input = ARGV[0].nil? ? $< : File.new(ARGV[0],"r")
यह काफी अच्छी तरह से काम करता है - बस आश्चर्य हुआ कि क्या इसे कम करने के लिए कोई सुधार है?कोई तर्क नहीं अगर stdin के खिलाफ चलाने के लिए स्क्रिप्ट; अन्यथा इनपुट फ़ाइल = एआरजीवी [0]
input = ARGV[0].nil? ? $< : File.new(ARGV[0],"r")
आप पूरी तरह से पहले पांच लाइनों को खत्म कर सकते हैं।
कुदाल से मिट्टी खुरपना से
इसलिए$<: An object that provides access to the concatenation of the contents of all the files given as command-line arguments or $stdin (in the case where there are no arguments). $< supports methods similar to a File object: binmode, close, closed?, each, each_byte, each_line, eof, eof?, file, filename, fileno, getc, gets, lineno, lineno=, path, pos, pos=, read, readchar, readline, readlines, rewind, seek, skip, tell, to_a, to_i, to_io, to_s, along with the methods in Enumerable. The method file returns a File object for the file currently being read. This may change as $< reads through the files on the command line. [r/o]
:
print $<.read
Kernel.gets $ < .gets के लिए आशुलिपि, इसलिए है:
while s = gets
puts s
end
then
और ;
वैकल्पिक
भी आप त्रिगुट ऑपरेटर का उपयोग कर सकते हैं File()
, तो
input = ARGV ? $< : File.new(ARGV[0])
महान - +1 - लेकिन मैं मतदान अन्य जवाब के रूप में यह भी छोटा है! अच्छी पुरानी रूबी! – monojohnny
केवल ARGV ?
मेरे लिए काम करता है, "r"
सामान्य रूप से तो डिफ़ॉल्ट इसे छोड़ सकते हैं, और File.new()
एक ही हो सकता है:
if (ARGV[0].nil?) then
input=$<
else
input=File.new(ARGV[0],"r");
end
...
# Do something with the input here, for example:
input.each_line do |line|
puts line
end
इस तरह: धन्यवाद! – monojohnny
+1, मुझे फ़ाइल के बारे में पता नहीं था() :) – makevoid
फ़ाइल ("foo") अब काम नहीं कर रहा है (रूबी 2.3.1): NoMethodError: मुख्य के लिए अपरिभाषित विधि 'फ़ाइल': ऑब्जेक्ट। –
पर अपडेट किया गया है, इसके अलावा, आप 'ARGF' का उपयोग कर सकते हैं, क्योंकि यह' 8 <'के लिए उपनाम है। – kejadlen
हाँ - यह बहुत अच्छा काम करता है - यह मुझे आश्चर्यचकित करता है कि मैं इसे पकड़ने के लिए पहली बार सर्कल में क्यों गया। मुझे लगता है कि यह शायद थोड़ा अजीब (लेकिन अच्छा) व्यवहार की वजह से है कि यदि आप बिना तर्क के 'ruby myscript.rb' चलाते हैं, तो स्क्रिप्ट बस बाहर निकलती है - अधिकांश प्रोग्राम (उदाहरण के लिए यूनिक्स पर निश्चित रूप से) बैठेंगे और प्रतीक्षा करेंगे stdin: तो मुझे लगता है कि मुझे लगता है कि मुझे वहां कुछ लागू करना था - लेकिन वास्तव में (विवरण के लिए धन्यवाद) रूबी दुभाषिया कुछ काफी उपयोगी और काफी चालाक (हमेशा की तरह) करता है! धन्यवाद। – monojohnny
मैं आपके साथ ठीक हूँ। मैं अभी भी इन छोटी छोटी रूबी चालों के लिए उपयोग (और खोज) कर रहा हूं। –