আর-এ প্যারেন্ট.ফ্রেম () এবং প্যারেন্ট.এনভি () এর মধ্যে পার্থক্য কী; রেফারেন্সের মাধ্যমে তারা কীভাবে আলাদা হতে পারে?


84

কেউ যদি একটি সাধারণ উদাহরণ দিয়ে এটি বর্ণনা করতে পারে তবে সহায়ক হবে?

এছাড়াও, এর parent.frame()পরিবর্তে parent.env()এবং বিপরীতে কোথায় ব্যবহার করা কার্যকর হবে ।

উত্তর:


99

parent.envএকটি পরিবেশ যা একটি বন্ধ (উদাহরণস্বরূপ, ফাংশন) সংজ্ঞায়িত করা হয়। parent.frameএমন পরিবেশ যা থেকে বন্ধের আহ্বান জানানো হয়েছিল।

f = function() 
     c(f=environment(), defined_in=parent.env(environment()),  
       called_from=parent.frame())
g = function() 
     c(g=environment(), f())

এবং তারপর

> g()
$g
<environment: 0x14060e8>

$f
<environment: 0x1405f28>

$defined_in
<environment: R_GlobalEnv>

$called_from
<environment: 0x14060e8>

আমি নিশ্চিত নই যে কোনও নিখুঁত নশ্বর কখনই তাদের সত্যিকার অর্থে ব্যবহার করতে চান, তবে ধারণাগুলি এখানে বর্ণবাদী ক্ষেত্রটি বোঝার জন্য দরকারী

> f = function() x
> g = function() { x = 2; f() }
> h = function() { x = 3; function() x }
> x = 1
> f()
[1] 1
> g()
[1] 1
> h()()
[1] 3

বা রহস্যজনক 'ব্যাংক অ্যাকাউন্ট' উদাহরণে আর পরিচিতির উদাহরণে বিশদ বিবরণ বিভাগের প্রথম অনুচ্ছেদে ?parent.frameবিষয়গুলি স্পষ্ট করা হতে পারে।

search()পরিবেশগুলি আর-এ বিস্তৃত হয়, উদাহরণস্বরূপ, পথটি (প্রায়) পরিবেশে এক ভাইবোন -> পিতামাতার সম্পর্কের সাথে এক সাথে আবদ্ধ। কেউ কখনও কখনও env = new.env(parent=emptyenv())প্রতীক চেহারা অবলম্বন করতে দেখেন - সাধারণত env[["x"]]প্রথমে দেখতে পাবেন envএবং তারপরে envযদি খুঁজে না পাওয়া যায় তবে পিতামাতার কাছে। তেমনি, <<-অ্যাসাইনমেন্টটি শুরুতে সন্ধান করে parent.env। আর এ তুলনামূলকভাবে নতুন রেফারেন্স শ্রেণি প্রয়োগকরণ একটি উদাহরণ-নির্দিষ্ট পরিবেশ নির্ধারণ করতে এই ধারণাগুলির উপর নির্ভর করে যেখানে প্রতীক (উদাহরণ ক্ষেত্র এবং পদ্ধতি) পাওয়া যেতে পারে।

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