【发布时间】:2012-12-13 23:51:54
【问题描述】:
我目前正在学习 D 并且正在采取婴儿步骤,所以请多多包涵。
我正在阅读标题为“D 编程语言”的书。我正在为我的代码使用 D-IDE。我目前正在编写一个程序,如果书中还没有单词,它应该将单词添加到它的词汇表(字典)中。
但问题是,这本书提供的代码是无效的,而不是仅仅继续阅读结果应该是什么等等。我想尝试解决它。当然是我对 D 很陌生的问题。
代码如下:
import std.stdio, std.string;
void main() {
uint[string] dictionary;
foreach(line; stdin.byLine()) {
// Break sentence into words
// Add each word in the sentence to the vocabulary
foreach(word; splitter(strip(line))) {
if(word in dictionary) continue; // Nothing to do
auto newID = dictionary.length;
dictionary[word] = newID;
writeln(newID, '\t', word);
}
}
}
IDE 显示Error: undefined identifier splitter,由于我对 Java 非常有经验,我猜该错误意味着该方法不存在,因此它试图将其作为变量处理,但它也不存在。所以我尝试将其更改为“拆分”。这会在字典中产生另一个错误:Error: associative arrays can only be assigned values with immutable keys, not char[]
所以我真的不知道该怎么做才能解决这个问题并让它发挥作用。当本应教你的书籍中的代码不起作用时,真是令人沮丧。我正在使用 dmd2。
【问题讨论】:
-
你确定这本书的名字不是
The D Programming Language?该示例以及使用最近的工具编译它的问题听起来 mighty familiar... -
是的,就是那本书。当我拿到这本书时,我没有得到任何东西.. <.>
-
不幸的是,自从它出版以来,有些东西发生了变化,但这本书仍然是 D 方面最好的资源之一,而且通常是一本非常好的技术书籍。
标签: d