উদাহরণস্বরূপ কোডের এই লাইনে আমি লিখেছি 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'
সাথে এই গ্লোবাল ভেরিয়েবলগুলি অ্যাক্সেস করতে পারেন ।
english
liberal এর সংক্ষিপ্ত রূপ
এপিআই ডক্স কিছু ভাল ইঙ্গিত দেয়:
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
=> nil
puts
স্বয়ংক্রিয়ভাবে অ্যারেগুলি আনপ্যাক করে, যখন এটি 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
=> nil
print
আউটপুট রেকর্ড বিভাজক লিখুন $\
যা কিছু মুদ্রণের পরে, যখন 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! => nil
puts
to_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
না এক করে, ধরো যদি যেখানে অ্যারের স্ট্রিং মধ্যে ইন্টারপোলেট রয়েছে বলে মনে হচ্ছে। (অগত্যা তাই, যেহেতু স্ট্রাল আক্ষরিক মূল্যায়ন করার সময় অন্তরঙ্গকরণ ঘটে))