উদাহরণস্বরূপ কোডের এই লাইনে আমি লিখেছি printএবংputs বিভিন্ন ফলাফল উত্পন্ন ।
1.upto(1000).each { |i| print i if i % 2 == 0 }
উদাহরণস্বরূপ কোডের এই লাইনে আমি লিখেছি printএবংputs বিভিন্ন ফলাফল উত্পন্ন ।
1.upto(1000).each { |i| print i if i % 2 == 0 }
উত্তর:
puts ইতিমধ্যে একটি না থাকলে প্রতিটি যুক্তির শেষে একটি নতুন লাইন যুক্ত করে।
print একটি নতুন লাইন যুক্ত করে না।
উদাহরণ স্বরূপ:
puts [[1,2,3], [4,5,nil]] ফিরে আসবে:
1 2 3 4 5
যেখানে print [[1,2,3], [4,5,nil]]
ফিরে আসবে:
[[1,2,3], [4,5, শূন্য]]
নোট মান আউটপুট না রাখে কিভাবে প্রিন্ট করে দেখুন।
আপনি যদি অ্যারে প্রদর্শন করছেন তবে একটি বড় পার্থক্য are বিশেষত নীল নীল উদাহরণ স্বরূপ:
print [nil, 1, 2]
দেয়
[nil, 1, 2]
কিন্তু
puts [nil, 1, 2]
দেয়
1
2
দ্রষ্টব্য, কোনও শূন্য আইটেম প্রদর্শিত হচ্ছে না (কেবল একটি ফাঁকা রেখা) এবং প্রতিটি আইটেম আলাদা লাইনে।
nil
printআউটপুট প্রতিটি যুক্তি, দ্বারা অনুসরণ $,, এর $stdout, দ্বারা অনুসরণ $\। এটি সমানargs.join($,) + $\
putsউভয় $,এবং $\"\ n" তে সেট করে এবং তারপরে একই জিনিসটি করে print। মূল তফাতটি হ'ল প্রতিটি আর্গুমেন্টের সাথে একটি নতুন লাইন puts।
আপনি ব্যবহারকারী-বান্ধব নামেরrequire 'english' সাথে এই গ্লোবাল ভেরিয়েবলগুলি অ্যাক্সেস করতে পারেন ।
englishliberal এর সংক্ষিপ্ত রূপ
এপিআই ডক্স কিছু ভাল ইঙ্গিত দেয়:
print() → nil
print(obj, ...) → nilপ্রদত্ত বস্তু (গুলি) এতে লিখে দেয় iOS । রিটার্নস
nil।স্ট্রিমটি অবশ্যই লেখার জন্য খুলতে হবে। প্রতিটি প্রদত্ত বস্তু যা স্ট্রিং নয় এটি কল করে রূপান্তরিত হবে
to_sপদ্ধতিতে । যখন আর্গুমেন্ট ছাড়াই ডাকা হয় তখন এর সামগ্রীগুলি মুদ্রণ করে$_।যদি আউটপুট ক্ষেত্র বিভাজক (
$,) না হয় তবেnilএটি বস্তুর মধ্যে সন্নিবেশ করা হয়। যদি আউটপুট রেকর্ড বিভাজক ($\) না হয়nil, তবে এটি আউটপুটে যুক্ত হয়।...
puts(obj, ...) → nilদেওয়া বস্তু (গুলি) লিখেছেন iOS । ইতিমধ্যে একটি নতুন লাইন ক্রম দিয়ে শেষ হয় না যে কোনও পরে একটি নতুন লাইন লিখেছেন। রিটার্নস
nil।স্ট্রিমটি অবশ্যই লেখার জন্য খুলতে হবে। যদি অ্যারে আর্গুমেন্টের সাথে ডাকা হয়, প্রতিটি উপাদানকে একটি নতুন লাইনে লিখুন। প্রতিটি প্রদত্ত বস্তু যা স্ট্রিং বা অ্যারে নয় এটি কল করে রূপান্তরিত হবে
to_sপদ্ধতিটি । যদি আর্গুমেন্ট ছাড়াই ডাকা হয় তবে একটি নতুন লাইনের আউটপুট দেয়।
উপরে বর্ণিত পয়েন্টগুলি নিয়ে সামান্য পরীক্ষা-নিরীক্ষা করলে পার্থক্যগুলি মনে হয়:
একাধিক যুক্তি দিয়ে ডাকা হয়, printতাদেরকে 'আউটপুট ফিল্ড বিভাজক' দ্বারা পৃথক করে $,(যা কোনও কিছুরই ক্ষেত্রে ডিফল্ট হয়) যখন putsসেগুলি নিউলাইন দ্বারা আলাদা করে। putsচূড়ান্ত যুক্তির পরেও একটি নতুন লাইন রাখে, যখন printতা হয় না।
2.1.3 :001 > print 'hello', 'world'
helloworld => nil
2.1.3 :002 > puts 'hello', 'world'
hello
world
=> nil
2.1.3 :003 > $, = 'fanodd'
=> "fanodd"
2.1.3 :004 > print 'hello', 'world'
hellofanoddworld => nil
2.1.3 :005 > puts 'hello', 'world'
hello
world
=> nilputsস্বয়ংক্রিয়ভাবে অ্যারেগুলি আনপ্যাক করে, যখন এটি printকরে না:
2.1.3: 001> মুদ্রণ [1, [2, 3]], [4] [1, [2, 3]] [4] => শূন্য 2.1.3: 002> [1, [2, 3]], [4] রাখে 1 2 3 4 => শূন্য
printকোনও আর্গুমেন্ট প্রিন্ট ছাড়া $_(শেষ পঠিত জিনিসটি gets), যখন putsএকটি নতুন লাইন প্রিন্ট করে:
2.1.3 :001 > gets
hello world
=> "hello world\n"
2.1.3 :002 > puts
=> nil
2.1.3 :003 > print
hello world
=> nilprintআউটপুট রেকর্ড বিভাজক লিখুন $\যা কিছু মুদ্রণের পরে, যখন putsএই পরিবর্তনশীলটিকে উপেক্ষা করে:
mark@lunchbox:~$ irb
2.1.3 :001 > $\ = 'MOOOOOOO!'
=> "MOOOOOOO!"
2.1.3 :002 > puts "Oink! Baa! Cluck! "
Oink! Baa! Cluck!
=> nil
2.1.3 :003 > print "Oink! Baa! Cluck! "
Oink! Baa! Cluck! MOOOOOOO! => nilputsto_sপ্রতিটি আর্গুমেন্টের কল করুন এবং প্রতিটি স্ট্রিংয়ে একটি নতুন লাইন যুক্ত করুন, যদি এটি নতুন লাইনের সাথে শেষ না হয়।
printপ্রতিটি আর্গুমেন্টকে কেবল তাদের কল করে আউটপুট করুন to_s।
উদাহরণস্বরূপ
puts "one two":
one two
{নতুন লাইন}
puts "one two\n":
one two
line নতুন লাইন} # পুটগুলি ফলাফলটিতে একটি নতুন লাইন যুক্ত করবে না, যেহেতু স্ট্রিংটি একটি নতুন লাইনের সাথে শেষ হয়
print "one two":
one two
print "one two\n":
one two
{নতুন লাইন}
এবং আউটপুট দেওয়ার আরও একটি উপায় রয়েছে: p
প্রতিটি বস্তুর জন্য, সরাসরি obj.inspect লিখে প্রোগ্রামের স্ট্যান্ডার্ড আউটপুটে একটি নতুন লাইন পরে।
এটি ডিবাগিং বার্তাকে আউটপুট দিতে সহায়ক।
p "aa\n\t":aa\n\t
আপনি যদি স্ট্রিং ব্যবহার করে অ্যারে আউটপুট করতে চান putsতবে আপনি একই ফলাফল পাবেন যা আপনি ব্যবহার করছেন print:
puts "#{[0, 1, nil]}":
[0, 1, nil]
তবে যদি উদ্ধৃত স্ট্রিংটি না দিয়ে থাকে তবে হ্যাঁ। পার্থক্যটি যখন আমরা ব্যবহার করি তখন নতুন লাইনের মধ্যে puts।
printfপরিবর্তে ব্যবহার করা putsএকই ফল দেবে, তবে বাস্তবে তা হয় না। putsবৈকল্পিক শেষে একটি newline যোগ করার সময় printfনা এক করে, ধরো যদি যেখানে অ্যারের স্ট্রিং মধ্যে ইন্টারপোলেট রয়েছে বলে মনে হচ্ছে। (অগত্যা তাই, যেহেতু স্ট্রাল আক্ষরিক মূল্যায়ন করার সময় অন্তরঙ্গকরণ ঘটে))