सी # में आप यह कर सकते हैं

public class Foo
{
    public string Name { get; private set; }

    public Foo(string name)
    {
        Name = name;
    }
}

public static void Main()
{
    var foo = new Foo("Foo Object");

    Console.WriteLine(foo.Name);

    // Will not compile
    // foo.Name = "Bar Object";
}

क्या आप निम में ऐसा ही कर सकते हैं (या कुछ ऐसा जिसका अभीष्ट प्रभाव है)?

0
ilitirit 12 जून 2020, 23:38

1 उत्तर

सबसे बढ़िया उत्तर

निम में टाइप स्कोप पर एनकैप्सुलेशन नहीं है (और इसका कोई मतलब नहीं होगा क्योंकि निम एक ऑब्जेक्ट ओरिएंटेड भाषा नहीं है, सभी डेटा प्रोसेसिंग डेटा से ही अलग होती है)। मॉड्यूल-स्कोप इनकैप्सुलेशन का उपयोग करके समान प्रभाव प्राप्त किया जा सकता है:

Foo.nim:

type Foo* = ref object
    name: string

proc newFoo*(name: string): Foo =
    new result
    result.name = name

proc name*(self: Foo): string =
    self.name

मुख्य.निम:

import foo

let f = newFoo("Foo Object")
echo f.name

# Error: attempting to call undeclared routine: 'name='
# f.name = "Bar Object"
3
Andrew Penkrat 13 जून 2020, 14:00