ruby - লনস - রেকটাম ক্যান্সারের লক্ষণ




রুবি এর ডাবল কোলন `::` কি? (7)

কোনও সুযোগ প্রকাশ করার জন্য যদি আপনি কেবলমাত্র ব্যবহার করতে পারেন এমন সুযোগটি (ব্যক্তিগত, সুরক্ষিত) কী?

রুবিতে, সবকিছু উন্মোচিত হয় এবং সবকিছু কোথাও থেকে সংশোধন করা যেতে পারে।

যদি আপনি এই বিষয়ে চিন্তিত হন যে ক্লাসগুলিকে "বর্গ সংজ্ঞা" বাইরে থেকে পরিবর্তন করা যেতে পারে, তাহলে রুবি সম্ভবত আপনার জন্য নয়।

অন্যদিকে, যদি আপনি জাভা শ্রেণীর ক্লাসগুলি হ্রাস করে হতাশ হন তবে রুবি সম্ভবত আপনি যা খুঁজছেন তা।

এই ডবল কোলন কি? যেমন Foo::Bar

আমি একটি definition খুঁজে পাওয়া যায় নি:

:: একটি অবিচ্ছিন্ন অপারেটর যা অনুমোদন করে: বর্গ বা মডিউলের বাইরে যে কোনও শ্রেণী বা মডিউলের মধ্যে সংজ্ঞায়িত স্তম্ভ, উদাহরণ পদ্ধতি এবং শ্রেণী পদ্ধতি।

কোনও সুযোগ প্রকাশ করার জন্য যদি আপনি কেবলমাত্র ব্যবহার করতে পারেন এমন সুযোগটি (ব্যক্তিগত, সুরক্ষিত) কী?


আগের উত্তরগুলিতে যোগ করা, এটি ব্যবহারযোগ্য রুবি যা :: উদাহরণ পদ্ধতিতে অ্যাক্সেস করতে। নিম্নলিখিত সব বৈধ:

MyClass::new::instance_method
MyClass::new.instance_method
MyClass.new::instance_method
MyClass.new.instance_method

সেরা অনুশীলন অনুযায়ী আমি শুধুমাত্র শেষ এক সুপারিশ করা হয়।


এটি আপনার প্রকল্পের সাথে সংযুক্ত অন্যান্য কোডের সাথে সংঘর্ষ থেকে সংজ্ঞাগুলিকে রোধ করার বিষয়ে। এর অর্থ আপনি জিনিস আলাদা রাখতে পারেন।

উদাহরণস্বরূপ, আপনার কোডটিতে "রান" নামক একটি পদ্ধতি থাকতে পারে এবং আপনি এখনও "রান" পদ্ধতির পরিবর্তে আপনার পদ্ধতিতে কল করতে সক্ষম হবেন যা আপনার সাথে সংযুক্ত অন্যান্য লাইব্রেরিতে সংজ্ঞায়িত করা হয়েছে।


না, এটি প্রতিটি পদ্ধতিতে অ্যাক্সেস করতে হয় না, এটি একটি "রেজোলিউশন" অপারেটর, যা আপনি একটি স্থির / স্ট্যাটিক প্রতীকের সুযোগ (অথবা অবস্থান যা আপনি বলতে পারেন) সমাধান করতে ব্যবহার করেন।

উদাহরণস্বরূপ, আপনার লাইনের প্রথম অংশে, Rails ActiveRecord.Module এর ভিতর বেস বর্গ খুঁজে পেতে এটি ব্যবহার করে, আপনার দ্বিতীয়টিতে এটি রুট ক্লাসের স্ট্যাটিক (স্ট্যাটিক) ইত্যাদি সনাক্ত করার জন্য ব্যবহৃত হয়।

এটি কিছু প্রকাশ করার জন্য ব্যবহার করা হয় না, এটি আপনার স্কোপগুলির চারপাশে থাকা জিনিসগুলি "সনাক্ত" করতে ব্যবহৃত হয়।

http://en.wikipedia.org/wiki/Scope_resolution_operator


রেলপথের রুবি :: নামস্পেস রেজোলিউশনের জন্য ব্যবহার করে।

class User < ActiveRecord::Base

  VIDES_COUNT = 10
  Languages = { "English" => "en", "Spanish" => "es", "Mandarin Chinese" => "cn"}

end

এটি ব্যবহার করার জন্য:

User::VIDEOS_COUNT
User::Languages
User::Languages.values_at("Spanish") => "en"

এছাড়াও, অন্যান্য ব্যবহার হল: নেস্টেড রুট ব্যবহার করার সময়

OmniauthCallbacksController ব্যবহারকারীদের অধীনে সংজ্ঞায়িত করা হয়।

এবং রুট ভালো হয়:

devise_for :users, controllers: {omniauth_callbacks: "users/omniauth_callbacks"}


class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController

end

:: আপনাকে অন্য ক্লাস বা মডিউলের ভিতরে সংজ্ঞায়িত একটি ধ্রুবক, মডিউল বা শ্রেণিকে অ্যাক্সেস করতে দেয়। এটি নামস্থান প্রদান করার জন্য ব্যবহৃত হয় যাতে পদ্ধতি এবং শ্রেণী নাম বিভিন্ন লেখকদের দ্বারা অন্যান্য ক্লাসগুলির সাথে দ্বন্দ্ব না করে।

যখন আপনি ActiveRecord::Base Rails এ ActiveRecord::Base দেখেন তখন এর মানে হল যে Rails এর মতো কিছু আছে

module ActiveRecord
  class Base
  end
end

অর্থাৎ একটি মডিউল ActiveRecord ভিতরে Base নামক একটি শ্রেণি যা তারপরে ActiveRecord::Base হিসাবে উল্লেখ করা হয়েছে (আপনি এটি ActiveRecord::Base করতে পারেন activescord-nnn / lib / active_record / base.rb- এ Rails উৎসে)

:: এর একটি সাধারণ ব্যবহার :: যেমন মডিউলে সংজ্ঞায়িত স্টোন অ্যাক্সেস করা হয়

module Math
  PI = 3.141 # ...
end

puts Math::PI

:: অপারেটর আপনাকে ব্যক্তিগত বা সুরক্ষিত চিহ্নিত পদ্ধতিগুলির দৃশ্যমানতা বাইপাস করার অনুমতি দেয় না।


module Amimal
      module Herbivorous
            EATER="plants" 
      end
end

Amimal::Herbivorous::EATER => "plants"

:: একটি সুযোগ তৈরি করতে ব্যবহৃত হয়। 2 মডিউল থেকে কনস্ট্যান্ট EATER অ্যাক্সেস করার জন্য আমরা ধ্রুবক পর্যন্ত পৌঁছাতে মডিউল সুযোগ প্রয়োজন





operators