আমি রুবি বিশ্বে একেবারে নতুন, এবং আমি প্রতীক ধারণার সাথে কিছুটা বিভ্রান্ত। সিম্বলস এবং ভেরিয়েবলের মধ্যে পার্থক্য কী? কেন শুধু ভেরিয়েবল ব্যবহার করছেন না?
ধন্যবাদ।
আমি রুবি বিশ্বে একেবারে নতুন, এবং আমি প্রতীক ধারণার সাথে কিছুটা বিভ্রান্ত। সিম্বলস এবং ভেরিয়েবলের মধ্যে পার্থক্য কী? কেন শুধু ভেরিয়েবল ব্যবহার করছেন না?
ধন্যবাদ।
উত্তর:
পরিবর্তনশীল এবং চিহ্নগুলি পৃথক জিনিস। বিভিন্ন ধরণের ডেটাতে একটি পরিবর্তনশীল পয়েন্ট। রুবিতে, একটি চিহ্ন একটি ভেরিয়েবলের চেয়ে স্ট্রিংয়ের মতো বেশি।
রুবিতে একটি স্ট্রিং পরিবর্তনীয়, অন্যদিকে প্রতীকটি অপরিবর্তনীয়। এর অর্থ একটি প্রতীকের কেবল একটি অনুলিপি তৈরি করা দরকার। সুতরাং, আপনি যদি
x = :my_str
y = :my_str
:my_str
শুধুমাত্র একবার তৈরি করা হবে, এবং x
এবং y
মেমরি একই এলাকা থেকে বিন্দু। অন্যদিকে, আপনি যদি
x = "my_str"
y = "my_str"
একটি স্ট্রিং ধারণকারী my_str
নির্মিত হবে দুইবার , এবং x
এবং y
বিভিন্ন দৃষ্টান্ত নির্দেশ করবে।
ফলস্বরূপ, প্রতীকগুলি প্রায়শই রুবিতে এনামগুলির সমতুল্য হিসাবে ব্যবহার করা হয়, পাশাপাশি একটি অভিধান (হ্যাশ) এর কীগুলিও।
#mySymbol
।
রুবির প্রতীকটি মূলত বাস্তব বিশ্বের প্রতীক হিসাবে একই জিনিস। এটি কিছু উপস্থাপন বা নামকরণ করতে ব্যবহৃত হয়।
প্রতীকগুলি খুব সাধারণভাবে কোনও ধরণের রাষ্ট্রের প্রতিনিধিত্ব করতে ব্যবহৃত হয়, উদাহরণস্বরূপ
order.status = :canceled
order.status = :confirmed
আপনি তাত্ক্ষণিক এনাম হিসাবে প্রতীক দেখতে পারেন। আপনার কোনও চিহ্ন নির্দিষ্ট করার দরকার নেই, আপনি কেবল এটি ব্যবহার করুন। এই নিবন্ধটি দুর্দান্তভাবে এটি ব্যাখ্যা করে।
সাধারণত, ভেরিয়েবলগুলি স্ট্রিংগুলির সাথে বিভ্রান্ত হয় তবে আমি আপনাকে এটি ভেরিয়েবলের মতো ভেবে বুঝতে পারি। এটা বোধগম্য. এই ভাবে চিন্তা করুন:
গেমের খেলোয়াড়ের স্থিতি একটি সংখ্যা দ্বারা প্রতিনিধিত্ব করা হয়। 1 এর অর্থ জীবিত, 2 অর্থ অনিশ্চিত, 3 এর অর্থ মৃত। এটি সহজেই প্রতীক দ্বারা প্রতিস্থাপন করা যেতে পারে। প্রতীকগুলি হতে পারে :alive
:unsure
এবং :dead
। কোনও খেলোয়াড় জীবিত আছে কিনা তা পরীক্ষা করার পরিবর্তে:
if player_status == 1
আপনি এটি করতে পারেন:
if player_status == :alive