当前位置:  开发笔记 > 运维 > 正文

D编程语言char数组

如何解决《D编程语言char数组》经验,为你挑选了2个好方法。

这听起来真的很愚蠢.但我对D编程语言有一个奇怪的问题.当我尝试创建这样的新数组时:

import std.stdio;

void main()
{
    char[] variable = "value";
    writefln(variable);
}

DMD编译器总是给我这个错误:

test.d(5):错误:无法隐式转换类型为invariant(char [5u])的表达式("value")为char []

知道为什么吗?我正在为Ubuntu 使用2.014 alpha(可在此处获得).



1> ryeguy..:

我正在搜索指南的数组部分,这可能会有所帮助:

字符串是一个字符数组.字符串文字只是编写字符数组的简单方法.字符串文字是不可变的(只读).

char[] str1 = "abc";                // error, "abc" is not mutable
char[] str2 = "abc".dup;            // ok, make mutable copy
invariant(char)[] str3 = "abc";     // ok
invariant(char)[] str4 = str1;      // error, str4 is not mutable
invariant(char)[] str5 = str1.idup; // ok, make invariant copy

从这里开始.



2> FeepingCreat..:

基本上,它归结为字符串文字存储在内存的只读部分.char[]"可变字符的可变数组",如果写入,将生成运行时崩溃.

所以编译器真的试图在这里保护你.

invariant(char)[]意思是"一个可变数组的不变字符",这正是它的本质.

PS:当你不需要它时char[],你可能想要使用auto,如,auto variable = "value".让你不要考虑它的类型:)

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有