`
tomcent
  • 浏览: 1398 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

D语言起步

阅读更多
2007-12-8 我第一次接触D语言,尝试了一下,发现效率还蛮高的.
1.在linux 下安装D语言编译器
  D语言的编译器目前有2个,DMD和GDC,DMD比较容易配置,
  可以从http://www.digitalmars.com/d/dcompiler.html下载最新版
  我下载的是dmd.zip包
  a. 直接解压dmd.zip包在根目录下 /dmd
  b. 设置环境变量
      在/etc/profile 文件后面添加一行
      [root@localhost /]#vi /etc/profile
      export PATH=$PATH:/dmd/bin
  c. 使设置的环境变量生效
      [root@localhost /]#source /etc/profile

2.写个helloWord 测试一下
  a. [root@localhost /]#vi hello.d

    void main()
    {
    
     printf("hello, world!");
    }

  b. [root@localhost /]#dmd hello.d

  c. [root@localhost /]#./hello
3.不用编译直接当作脚本文件来运行


#!/dmd/bin/dmd -run
/* 声明为脚本文件,并且执行它的是dmd*/

/* Hello World in D
   To compile:
     dmd hello.d
   or to optimize:
     dmd -O -inline -release hello.d
*/

import std.stdio;

void main(char[][] args)
{
    writefln("Hello World, Reloaded");

    // auto type inference and built-in foreach
    foreach (argc, argv; args)
    {
        // Object Oriented Programming
        CmdLin cl = new CmdLin(argc, argv);
        // Improved typesafe printf
        writefln(cl.argnum, cl.suffix, " arg: %s", cl.argv);
        // Automatic or explicit memory management
        delete cl;
    }

    // Nested structs and classes
    struct specs
    {
        // all members automatically initialized
        int count, allocated;
    }

    // Nested functions can refer to outer
    // variables like args
    specs argspecs()
    {
        specs* s = new specs;
        // no need for '->'
        s.count = args.length;    // get length of array with .length
        s.allocated = typeof(args).sizeof; // built-in native type properties
        foreach (argv; args)
            s.allocated += argv.length * typeof(argv[0]).sizeof;
        return *s;
    }

    // built-in string and common string operations
    writefln("argc = %d, " ~ "allocated = %d",
argspecs().count, argspecs().allocated);
}

class CmdLin
{
    private int _argc;
    private char[] _argv;

public:
    this(int argc, char[] argv) // constructor
    {
        _argc = argc;
        _argv = argv;
    }

    int argnum()
    {
        return _argc + 1;
    }

    char[] argv()
    {
        return _argv;
    }

    char[] suffix()
    {
        char[] suffix = "th";
        switch (_argc)
        {
          case 0:
            suffix = "st";
            break;
          case 1:
            suffix = "nd";
            break;
          case 2:
            suffix = "rd";
            break;
          default:
    break;
        }
        return suffix;
    }
}
保存为:scripttest.d
[root@localhost /]#chmod +x scripttest.d
[root@localhost /]#./scripttest.d
分享到:
评论

相关推荐

    C++语言起步电子书

    ### C++语言起步知识点解析 #### 一、C++语言初步理解 - **知识点1: 输出语句** 在C++中,`cout` 是一个预定义的对象,用于标准输出流,通常用来向标准输出设备(通常是屏幕)输出数据。`cout` 通常与 `运算符...

    新手起步:perl入门

    ### 新手起步:Perl入门——全面解析Perl编程基础 #### 一、《Perl语言入门》:小骆驼书引领新手入门 《Perl语言入门》作为O'Reilly出版社的经典之作,被广泛誉为“小骆驼书”,是Perl编程语言学习者的首选教材。...

    游戏编程起步

    《游戏编程起步》是一本专为初学者设计的教程,旨在引导读者进入充满创意与乐趣的游戏编程世界。这本书精心挑选了近180个不同类型的互动游戏和活动,旨在通过实践来教授编程基础,使学习过程既具有挑战性又富有趣味...

    codeblocks下图形编程起步

    CodeBlocks的灵活性和强大的配置能力也体现在对多种文件类型的支持上,包括但不限于C/C++、AngelScript、CSS、D语言、Fortran77、Python、XML等,甚至可以识别和处理Dev-C++和MSVS工程文件。 在图形编程方面,...

    PHP编程起步自学教程2.pdf

    根据提供的文件信息,“PHP编程起步自学教程2.pdf”这一标题及描述表明这是一份关于PHP编程语言的学习资料。虽然给出的部分内容并未包含实际的教学内容,但从文件标题、描述以及标签可以推断出这份资料旨在帮助初学...

    零起步教你搭建DISCUZ论坛.doc

    【标题】: "零起步教你搭建DISCUZ论坛.doc" 【描述】: "这篇文档将指导初学者如何从零开始搭建DISCUZ论坛,涵盖了论坛的演变历程、所需准备的工作,以及具体步骤,旨在帮助读者了解搭建论坛的过程。" 【标签】: ...

    Vole:与有趣的抽象小机器一起成为有趣的小编程语言

    它只是刚刚起步,所以还有更多。 田鼠有点像LISP,但功能是黑盒装的。 哦,它还对效果和处理程序提供了一些支持。 具体语法 原子 A ::= CB B ::= | CB | DB C ::= ...anything but whitespace \^/.!()[]{}...

    适合小孩接触编程起步的几款软件,从游戏中学习编程-2021-08-29(B).pdf

    以下是一些适合小孩接触编程起步的软件和游戏: 1. **Scratch**:由麻省理工学院(MIT)开发的可视化编程语言,通过拖拽积木式的编程块,让孩子们理解基本的编程概念,如逻辑结构、循环和条件语句。 2. **Code.org**...

    ddd.rar_ddd_ddd lin_ddd linux_linux dd_linux D

    描述中提到“在linux如何使用ddd,刚刚起步学linux”,这表明内容可能涉及ddd(Data Display Debugger)在Linux环境下的使用教程,适合初学者。 ddd是GNU项目中的一个图形化调试器,它为命令行界面的GDB(GNU ...

    PIC单片机常用模块与典型实例_书籍

    《零点起步——PIC单片机常用模块与典型实例》是由闫广明等编著的一本深入浅出的教程,旨在帮助初学者快速掌握PIC单片机的基本操作和应用。这本书详细介绍了PIC单片机的各种核心模块,并通过丰富的实例解析,使读者...

    《成功之路+起步篇+2》第20课课件实用教案.ppt

    - **知道(zhī dào)**:了解或理解某事。 - **一会儿(yì huìr)**:表示一段时间,通常用于短暂的等待或活动。 2. **短语**: - **给+(谁)+发短信(fā SMS)**:向某人发送短信,如“给我朋友发短信”。 - **...

    python二级模拟卷3图文word练习.docx

    16. **计费程序**:模拟滴滴快车的计费规则,需要考虑起步价、里程费和时长费,以及不同时间段的价格差异。编写这样的程序需要处理输入数据、计算费用并输出结果。 综上所述,本题主要涵盖Python的基础语法、函数...

    EDA试卷/VHDL试卷 复习题

    1. **初步发展阶段**:此阶段EDA技术刚刚起步,主要集中在简单的电路设计与仿真上,工具较为基础。 2. **集成化阶段**:随着计算机技术的发展,EDA工具开始集成了更多功能,如自动布局布线等高级特性。 3. **系统级...

    基于SpringBoot 实现国际化配置的完整源码示例

    我们需要理解Spring Boot的`spring-boot-starter-web`起步依赖已经集成了Spring MVC,而Spring MVC支持Spring的`MessageSource`接口,这是处理国际化的核心。 1. **配置文件**: 国际化的核心配置文件是`messages....

    出租车计价器的设计与实现(1)

    5. **硬件接口**:设计中提到了VHDL语言,这是一种硬件描述语言,用于描述硬件电路的行为。在硬件实现部分,可以看到诸如VCCSHURU、INPUTA、OUTPUTA、B[3..0]、C[9..0]和QUSHU1inst1等信号和端口,这些都是构成计价...

    职称计算机Windows XP考试试题(一).docx

    - A: 1979年互联网技术还处于起步阶段。 - B: 正确答案。 - C: 1969年ARPANET成立。 - D: 1994年,万维网已经开始流行。 #### 9. 图形图像颜色模型 - **概念**: 不同的颜色模型适用于不同的场合。 - **选项解析...

    资料python资料.docx

    5. 计算机能直接识别、理解并执行的语言是D.机器语言,因为机器语言是计算机硬件直接执行的指令集。 6. Python程序段`print("x=", x+1)`将输出`x=`后面跟着变量`x`的值加1,由于`x=9`,所以输出是`x=10`。 7. ...

    基于FPGA的出租车计费器Verilog设计与实现课设文档+Quartus9.1工程源码文件.zip

    5) 用Verilog HDL语言设计符合上述功能要求的出租车计费器,并用层次化设计方法设计该电路。 6) 完成电路全部设计后,通过在DE0开发板上下载实验以验证设计的正确性。 1.2 模块设计说明 1) 车速控制模块 当起停键...

Global site tag (gtag.js) - Google Analytics