खोज…


परिचय

स्केला पर स्कोप परिभाषित करता है कि एक मान ( def , val , var या class ) कहां से एक्सेस किया जा सकता है।

वाक्य - विन्यास

  • घोषणा
  • निजी घोषणा
  • निजी [यह] घोषणा
  • निजी [से] घोषणा
  • संरक्षित घोषणा
  • संरक्षित [कहां से] घोषणा

सार्वजनिक (डिफ़ॉल्ट) क्षेत्र

डिफ़ॉल्ट रूप से, गुंजाइश public , मान को कहीं से भी एक्सेस किया जा सकता है।

package com.example {
  class FooClass {
    val x = "foo"
  }
}

package an.other.package {
  class BarClass {
    val foo = new com.example.FooClass
    foo.x // <- Accessing a public value from another package
  }
}

एक निजी दायरा

जब गुंजाइश निजी होती है, तो इसे केवल वर्तमान वर्ग या वर्तमान वर्ग के अन्य उदाहरणों से ही एक्सेस किया जा सकता है।

package com.example {
  class FooClass {
    private val x = "foo"
    def aFoo(otherFoo: FooClass) {
      otherFoo.x // <- Accessing from another instance of the same class
    }
  }
  class BarClass {
    val f = new FooClass
    f.x // <- This will not compile
  }
}

एक निजी पैकेज-विशिष्ट गुंजाइश

आप एक पैकेज निर्दिष्ट कर सकते हैं जहां निजी मूल्य तक पहुँचा जा सकता है।

package com.example {
  class FooClass {
    private val x = "foo"
    private[example] val y = "bar"
  }
  class BarClass {
    val f = new FooClass
    f.x // <- Will not compile
    f.y // <- Will compile
  }
}

वस्तु निजी गुंजाइश

सबसे अधिक प्रतिबंधात्मक गुंजाइश "ऑब्जेक्ट-प्राइवेट" गुंजाइश है, जो केवल उस मूल्य को ऑब्जेक्ट के एक ही उदाहरण से एक्सेस करने की अनुमति देता है।

class FooClass {
  private[this] val x = "foo"
  def aFoo(otherFoo: FooClass) = {
    otherFoo.x // <- This will not compile, accessing x outside the object instance
  }
}

संरक्षित दायरा

संरक्षित क्षेत्र मूल्य को वर्तमान वर्ग के किसी भी उपवर्ग से एक्सेस करने की अनुमति देता है।

class FooClass {
  protected val x = "foo"
}
class BarClass extends FooClass {
  val y = x // It is a subclass instance, will compile
}
class ClassB {
  val f = new FooClass
  f.x // <- This will not compile
}

पैकेज संरक्षित क्षेत्र

पैकेज संरक्षित क्षेत्र एक विशिष्ट पैकेज में किसी भी उपवर्ग से केवल मूल्य तक पहुंचने की अनुमति देता है।

package com.example {
  class FooClass {
    protected[example] val x = "foo"
  }
  class ClassB extends FooClass {
    val y = x // It's in the protected scope, will compile
  }
}
package com {
  class BarClass extends com.example.FooClass {
    val y = x // <- Outside the protected scope, will not compile
  }
}


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow