" রুবি সিম্বল বোঝা " পড়া সত্ত্বেও , সিম্বলগুলি ব্যবহার করার ক্ষেত্রে আমি যখনই মেমোরিতে ডেটা উপস্থাপন করে তখনও বিভ্রান্ত হয়ে পড়েছি। যদি একটি প্রতীক, তাদের মধ্যে দুটি আলাদা আলাদা বস্তুতে অন্তর্ভুক্ত থাকে, একই মেমোরি অবস্থানের মধ্যে উপস্থিত থাকে, তবে কীভাবে তাদের আলাদা মান রয়েছে? আমি একই মান ধারণ করার জন্য একই মেমরির অবস্থানটি আশা করতাম।
এই লিঙ্কটি থেকে একটি উদ্ধৃতি:
স্ট্রিংয়ের বিপরীতে, একই নামের প্রতীকগুলি আরবি করা হয় এবং রুবির সেশনে একবারেই স্মৃতিতে উপস্থিত থাকে
আমি বুঝতে পারি না কীভাবে এটি একই মেমরির অবস্থানটিতে থাকা মানগুলিকে আলাদা করতে পরিচালিত করে।
এই উদাহরণ বিবেচনা করুন:
patient1 = { :ruby => "red" }
patient2 = { :ruby => "programming" }
patient1.each_key {|key| puts key.object_id.to_s}
3918094
patient2.each_key {|key| puts key.object_id.to_s}
3918094
patient1
এবং patient2
উভয় হ্যাশ, এটা ঠিক আছে। :ruby
তবে একটি প্রতীক। আমরা যদি নিম্নলিখিতগুলি আউটপুট করে থাকি:
patient1.each_key {|key| puts key.to_s}
তাহলে আউটপুট কী হবে? "red"
, বা "programming"
?
এক সেকেন্ডের জন্য হ্যাশগুলি ভুলে যাওয়া, আমি ভাবছি প্রতীকটি কোনও মানের একটি পয়েন্টার । আমার যে প্রশ্নগুলি রয়েছে তা হ'ল:
- আমি কি একটি চিহ্ন একটি মান বরাদ্দ করতে পারি?
- প্রতীক কি কোনও ভেরিয়েবলের সাথে এর মান সহ কেবল একটি পয়েন্টার?
- যদি চিহ্নগুলি বিশ্বব্যাপী হয়, তবে এর অর্থ কি একটি চিহ্ন সর্বদা একটি জিনিসকে নির্দেশ করে?
puts patient1[:ruby]
, এটি "লাল" মুদ্রণ করবে, আপনি যদি বলেনputs patient2[:ruby]
, এটি "প্রোগ্রামিং" মুদ্রণ করবে।