রুবির প্রতীক কী?


45

আমি রুবি বিশ্বে একেবারে নতুন, এবং আমি প্রতীক ধারণার সাথে কিছুটা বিভ্রান্ত। সিম্বলস এবং ভেরিয়েবলের মধ্যে পার্থক্য কী? কেন শুধু ভেরিয়েবল ব্যবহার করছেন না?

ধন্যবাদ।


লিস্পে - যা রুবি থেকে প্রাপ্ত - একটি প্রতীকটি মূলত একটি চলকটির জন্য ডেটাটাইপ; এর অর্থ আপনি প্রোগ্রামটি কার্যকর করার সাথে সাথে একটি প্রতিবিম্ব-এ্যাস্কি ফ্যাশনে কারচুপি করতে পারেন। (সর্বাধিক সুসংগত ব্যাখ্যা নয়, দুঃখিত)
পল নাথান

উত্তর:


70

পরিবর্তনশীল এবং চিহ্নগুলি পৃথক জিনিস। বিভিন্ন ধরণের ডেটাতে একটি পরিবর্তনশীল পয়েন্ট। রুবিতে, একটি চিহ্ন একটি ভেরিয়েবলের চেয়ে স্ট্রিংয়ের মতো বেশি।

রুবিতে একটি স্ট্রিং পরিবর্তনীয়, অন্যদিকে প্রতীকটি অপরিবর্তনীয়। এর অর্থ একটি প্রতীকের কেবল একটি অনুলিপি তৈরি করা দরকার। সুতরাং, আপনি যদি

x = :my_str
y = :my_str

:my_strশুধুমাত্র একবার তৈরি করা হবে, এবং xএবং yমেমরি একই এলাকা থেকে বিন্দু। অন্যদিকে, আপনি যদি

x = "my_str"
y = "my_str"

একটি স্ট্রিং ধারণকারী my_strনির্মিত হবে দুইবার , এবং xএবং yবিভিন্ন দৃষ্টান্ত নির্দেশ করবে।

ফলস্বরূপ, প্রতীকগুলি প্রায়শই রুবিতে এনামগুলির সমতুল্য হিসাবে ব্যবহার করা হয়, পাশাপাশি একটি অভিধান (হ্যাশ) এর কীগুলিও।


1
কেবলমাত্র @ মিপাডির পয়েন্টটি চাপ দিতে, আপনি যখন একটি স্ট্রিং তুলনা করেন তখন প্রতিটি চরিত্রের একে অপরের সাথে তুলনা করা আপনার প্রয়োজন। সুতরাং, অভিন্ন স্ট্রিংগুলির তুলনা করা হল ও (এন)। যেখানে রুবি প্রতীকগুলি বস্তুর রেফারেন্সের তুলনা করে ডাইনি হ'ল হে (1)।
জেরেমি হিলার

পাইথনে এটি নেই কেন?
চাকরি

এগুলিও অতিরিক্ত ব্যবহার না করার জন্য আপনার যত্নবান হওয়া উচিত, যেহেতু, শেষ অবধি আমি জানতাম, তবে আমি রুবি> ১.৯ এ দেখিনি, প্রতীকগুলি জিসি'ডি হয় না এবং তাই স্মৃতি খেয়ে ফেলতে পারে
frogstarr78

তারা স্মলটক মধ্যে অভিন্নরুপে আচরণ ছাড়া তারা মত চেহারা #mySymbol
ফ্রাঙ্ক শিয়েরার

@ ফ্রগস্টায়ার 7878 - আপনি যদি ক্রমিকভাবে চিহ্নগুলি তৈরি না করেন (প্রথমে পরীক্ষা না করে স্ট্রিংগুলিকে অভ্যন্তরীণ করা হয়), আপনাকে খুব বেশি চিহ্ন তৈরি করার বিষয়ে চিন্তা করতে হবে না।
জাস্টিন এল।

16

রুবির প্রতীকটি মূলত বাস্তব বিশ্বের প্রতীক হিসাবে একই জিনিস। এটি কিছু উপস্থাপন বা নামকরণ করতে ব্যবহৃত হয়।

প্রতীকগুলি খুব সাধারণভাবে কোনও ধরণের রাষ্ট্রের প্রতিনিধিত্ব করতে ব্যবহৃত হয়, উদাহরণস্বরূপ

order.status = :canceled
order.status = :confirmed

আপনি তাত্ক্ষণিক এনাম হিসাবে প্রতীক দেখতে পারেন। আপনার কোনও চিহ্ন নির্দিষ্ট করার দরকার নেই, আপনি কেবল এটি ব্যবহার করুন। এই নিবন্ধটি দুর্দান্তভাবে এটি ব্যাখ্যা করে।


1
আমি এ পর্যন্ত মনে করি সবচেয়ে বেশি ভাল ব্যাখ্যা।
ইউরি ঘেনসেভ

0

সাধারণত, ভেরিয়েবলগুলি স্ট্রিংগুলির সাথে বিভ্রান্ত হয় তবে আমি আপনাকে এটি ভেরিয়েবলের মতো ভেবে বুঝতে পারি। এটা বোধগম্য. এই ভাবে চিন্তা করুন:

গেমের খেলোয়াড়ের স্থিতি একটি সংখ্যা দ্বারা প্রতিনিধিত্ব করা হয়। 1 এর অর্থ জীবিত, 2 অর্থ অনিশ্চিত, 3 এর অর্থ মৃত। এটি সহজেই প্রতীক দ্বারা প্রতিস্থাপন করা যেতে পারে। প্রতীকগুলি হতে পারে :alive :unsureএবং :dead। কোনও খেলোয়াড় জীবিত আছে কিনা তা পরীক্ষা করার পরিবর্তে:

if player_status == 1

আপনি এটি করতে পারেন:

if player_status == :alive

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.