D语言中国主页  D语言编辑器SciTE4D   DWin库 D语言官方网站
D语言编译器1.x最新版 OpenSource   Tango   webnews  Wiki

查看完整版本: 7 D语言 properties

yidabu 2007-4-21 11:33

7 D语言 properties

7 D语言 properties知识若不分享 实在没有意义 http://www.d-programming-language-china.org 20070418点击下面网址查看原文:http://www.d-programming-language-china.org        by:        uFramer        D语言论坛 http://www.d-programming-language-china.org        from:        http://www.digitalmars.com/d/property.html        version:        基于D 1.012        (Apr 12, 2007)        每种类型和表达式都有可以查询的property:        Expression        Value        int.sizeof        yields 4        float.nan        yields the floating point nan (Not A Number) value        (float).nan        yields the floating point nan value        (3).sizeof        yields 4 (because 3 is an int)        2.sizeof        syntax error, since "2." is a floating point number        int.init        default initializer for int's        int.mangleof        yields the string "i"        int.stringof        yields the string "int"        (1+2).stringof        yields the string "1 + 2"        所有类型的property        Property        Description        .init        initializer        .sizeof        size in bytes (equivalent to C's sizeof(type))        .alignof        alignment size        .mangleof        string representing the 'mangled' representation of the type        .stringof        string representing the source representation of the type        整数数据型别的property        Property        Description        .init        initializer (0)        .max                maximum value        .min                minimum value        浮点型别的property        Property        Description        .init        initializer (NaN)        .infinity        infinity value        .nan                NaN value        .dig                number of decimal digits of precision        .epsilon        smallest increment to the value 1        .mant_dig        number of bits in mantissa        .max_10_exp        以 10 为底数的最大阶码maximum int value such that 10max_10_exp is representable        .max_exp        以 2 为底数的最大阶码maximum int value such that 2max_exp-1 is representable        .min_10_exp        以 10 为底数的最小阶码minimum int value such that 10min_10_exp is representable as a normalized value        .min_exp        以 2 为底数的最小阶码minimum int value such that 2min_exp-1 is representable as a normalized value        .max                largest representable value that's not infinity        .min                smallest representable normalized value that's not 0        .re                real part        .im                imaginary part        .init property        .init 产生一个常量表达式,其值为默认初始值。如果应用到某个类型,其值为该类型的默认初始值。如果应用到某个变量或域,其值为这个变量或域的默认初始值。例如:        [Copy to clipboard] [ - ]CODE:                                int a;                int b = 1;                typedef int t = 2;                t c;                t d = cast(t)3;                                int.init        // is 0                a.init        // is 0                b.init        // is 1                t.init        // is 2                c.init        // is 2                d.init        // is 3                                struct Foo                {                    int a;                    int b = 7;                }                                Foo.a.init    // is 0                Foo.b.init    // is 7        .stringof property        .stringof 产生常量字符串,如果应用到类型就是表示类型的字符,如果应用到表达式就是源表达式的文字形式, 语义分析程序这时不起作用。例如:        [Copy to clipboard] [ - ]CODE:                                struct Foo { }                                enum Enum { RED }                                typedef int myint;                                void main()                {                    writefln((1+2).stringof);    // "1 + 2"                    writefln(Foo.stringof);    // "Foo"                    writefln(test.Foo.stringof);    // "test.Foo"                    writefln(int.stringof);    // "int"                    writefln((int*[5][]).stringof); // "int*[5][]"                    writefln(Enum.RED.stringof);    // "Enum.RED"                    writefln(test.myint.stringof);    // "test.myint"                    writefln((5).stringof);    // "5"                }        类和结构的property        property是成员函数,但在语法上被看作是域。属性可读可写。通过调用一个无参数的方法可以读取属性。通过调用一个带有一个参数的方法可以对属性赋值,参数代表属性的新值。        简单的属性可以是:( 本文出处: http://www.d-programming-language-china.org )        [Copy to clipboard] [ - ]CODE:                                struct Foo                {                    int data() { return m_data; }            // 读属性                                    int data(int value) { return m_data = value; }     // 写属性                                    private:                    int m_data;                }                用法:        [Copy to clipboard] [ - ]CODE:                                int test()                {                    Foo f;                                    f.data = 3;        // 等价于 f.data(3);                    return f.data + 3;    // 等价于 return f.data() + 3;                }                如果没有读方法就意味着属性是只写的。        D语言论坛 http://www.d-programming-language-china.org        按:这里原译作“如果没有读方法就意味着属性是只写的”,按原英文改正。        如果没有写方法就意味着属性是只读的。        可以有多个写方法共存,用正常的重载规则来决定采用哪个函数。        在其他方面,这些方法同其他的方法都是相同的。它们可以是静态的、拥有不同的链接方式、被重载、被取地址等等。        注意:目前属性不能作为 op=、++ 或者 -- 运算符的左值。( lastupdate:20070421 最新文章请访问http://www.d-programming-language-china.org )关于一大步成功社区:yidabu提倡在交流中学习,在分享中提高收集感兴趣的知识,写下心得,通过网络与别人一起分享理解一点就实践一步,收获什么就分享什么,成功就是这样一点点一步步累积起来的网络只是一个工具,只有自己身心提高才是实实在在的。d-programming-language-china.org为大家提供一个学习交流各种知识的平台
页: [1]
查看完整版本: 7 D语言 properties