D語言
维库,知识与思想的自由文库
D語言是根據C語言改造的編程語言之一,由Digital Mars公司的Walter Bright製作。Walter Bright也是Symantec C++編譯器的作者。
[编辑] 特徵
- 可以任意地引進任何的文件。
[编辑] D語言中的Hello World程序
以下是D語言中的Hello World程序。
#!/usr/bin/dmd -run
/* sh style script syntax is supported! */
/* Hello World in D
* To compile:
* dmd hello.d
* or to optimize:
* dmd -O -inline -release hello.d
* or to get generated documentation:
* dmd hello.d -D
*/
import std.stdio; // References to commonly used I/O routines.
int main(char
[][] args)
{
// 'writefln' (Write-Formatted-Line) is the type-safe 'printf'
writefln("Hello World, "
// automatic concatenation of string literals
"Reloaded"
);
// Strings are denoted as a dynamic array of chars 'char[]'
// auto type inference and built-in foreach
foreach
(argc, argv; args)
{
auto
cl = new
CmdLin(argc, argv); // OOP is supported
writefln(cl.argnum, cl.suffix, " arg: %s"
, cl.argv); // user-defined class properties.
delete cl; // Garbage Collection or explicit memory management - your choice
}
// Nested structs, classes and functions
struct
specs
{
// all vars automatically initialized to 0 at runtime
int count, allocated; // however you can choose to avoid array initialization
int
[10000] bigarray = void
}
specs argspecs(char
[][] args)
// Optional (built-in) function contracts.
in
{
assert
(args.length > 0); // assert built in
}
out
(result)
{
assert
(result.count == CmdLin.total);
assert
(result.allocated > 0);
}
body
{
specs* s = new
specs;
// no need for '->'
s.count = args.length; // The 'length' property is number of elements.
s.allocated = typeof
(args).sizeof; // built-in properties for native types
foreach
(arg; args)
s.allocated += arg.length * typeof
(arg[0]).sizeof;
return *s; } // built-in string and common string operations, eg. '~' is concatenate.
char
[] argcmsg = "argc = %d"
char
[] allocmsg = "allocated = %d"
writefln(argcmsg ~ ", "
~ allocmsg,
argspecs(args).count,argspecs(args).allocated);
return
0;
}
/**
* Stores a single command line argument.
*/
class CmdLin { private
{
int
_argc;
char
[] _argv;
static uint _totalc; } public
/**
* Object constructor.
* params:
* argc = ordinal count of this argument.
* argv = text of the parameter
*/
this
(int
argc, char
[] argv)
{
_argc = argc + 1;
_argv = argv;
_totalc++;
}
~this
() // Object destructor
{
// Doesn't actually do anything for this example.
}
int
argnum() // A property that returns arg number
{
return
_argc;
}
char
[] argv() // A property that returns arg text
{
return
_argv;
}
wchar
[] suffix() // A property that returns ordinal suffix
{
wchar
[] suffix; // Built in Unicode strings (UTF-8, UTF-16, UTF-32)
switch
(_argc)
{
case
1:
suffix = "st"
break
case
2:
suffix = "nd"
break
case
3:
suffix = "rd"
break
default
- // 'default' is mandatory with "-w" compile switch.
suffix = "th"
}
return
suffix;
}
/**
* A static property, as in C++ or Java,
* applying to the class object rather than instances.
* returns: The total number of commandline args added.
*/
static typeof
(_totalc) total()
{
return
_totalc;
}
// Class invariant, things that must be true after any method is run.
invariant
{
assert
(_argc > 0);
assert
(_totalc >= _argc);
} }
[编辑] 外部链接
|
|
|
|---|---|
| 工业编程语言 | A+ - ActionScript - Ada - 汇编语言 - B - Brainfuck - COBOL - Curl - D - Delphi - Eiffel - Erlang - FORTRAN - IronPython - Java - JavaScript - JScript - Jython - LISP - Lua - MATLAB - MATHEMATICA - Nuva - Oberon - OCaml - Pascal - Perl - PHP - PostScript - Powerbuilder - Python - R - REXX - Ruby - Self - Smalltalk - SQL - Tcl/Tk - C# - F# - J# - Microsoft Visual C# |
| C/C++语言 | C - C++ - C++/CLI - Objective-C - Microsoft Visual C++ |
| BASIC语言 | BASIC - BASICA - GW-BASIC - QBASIC - QuickBASIC - True BASIC - Turbo BASIC - PowerBASIC - DarkBASIC -ETBASIC Visual Basic .NET - Visual Basic - VBScript - VBA |
| GPU用著色器語言 | Cg - GLSL - HLSL |
| 学术编程语言 | APL/J - Haskell - Logo - ML - Prolog - Scheme - SAC |
| 其他编程语言 | ALGOL - Clipper - Forth - Modula-2/Modula-3 - MUMPS - PL/I - Simula |




