PLDB
Languages Features Calendar About Lists Add Language
GitHub icon

Namespaces

Namespaces

Namespaces are a language feature.

Most languages have implicit scopes/namespaces, but some also allow for explicit namespacing.

Languages with Namespaces include C++, C#, TypeScript, F#

Example from C++:

#include <iostream> using namespace std; // Variable created inside namespace namespace first { int val = 500; } // Global variable int val = 100; // Ways to do it: https://en.cppreference.com/w/cpp/language/namespace namespace ns_name { declarations } inline namespace ns_name { declarations } namespace { declarations } ns_name::name using namespace ns_name; using ns_name::name; namespace name = qualified-namespace ; namespace ns_name::inline(since C++20)(optional) name { declarations }

Example from C#:

namespace MyNamespace { class MyClass { public void MyMethod() { System.Console.WriteLine("Creating my namespace"); } } }

Example from TypeScript:

// Typescript even supports splitting namespaces across multiple files: // Validation.ts namespace Validation { export interface StringValidator { isAcceptable(s: string): boolean; } } // LettersOnlyValidator.ts /// <reference path="Validation.ts" /> namespace Validation { const lettersRegexp = /^[A-Za-z]+$/; export class LettersOnlyValidator implements StringValidator { isAcceptable(s: string) { return lettersRegexp.test(s); } } }

Example from F#:

namespace Widgets type MyWidget1 = member this.WidgetName = "Widget1" module WidgetsModule = let widgetName = "Widget2"

Article source

PLDB - Build the next great programming language 路 v2022 Docs Acknowledgements Email GitHub