2

我正在使用 IronScheme 用 C#(使用 Visual Studio)制作一个程序,这是我拥有的一段代码。

exp = "(car '('(1 2 3) 4 5 6))";
System.Console.WriteLine(exp.Eval());

基本上,我想获取该列表的第一个元素,即另一个列表(1 2 3)。我的问题是我不知道如何获取实际的号码列表。在这个例子中,我打印 的结果Eval(),它打印:

IronScheme.Runtime.Cons

如果我将它转换为字符串,我会得到相同的结果。任何其他类型的转换/转换都会打印相同的内容

System.Console.WriteLine(exp.Eval().ToString()); 
// Also prints "IronScheme.Runtime.Cons"

如何获取该列表的值,如 C# list List<>

4

1 回答 1

1

Cons实现IEnumerable

您遇到的一个问题是已引用列表中的引用列表。我不确定这是否是您想要的,但我将其删除以作为示例:

var exp = "(car '((1 2 3) 4 5 6))";
var result = exp.Eval<Cons>(); // eval and cast => (1 2 3)

var list = result.Cast<int>().ToList(); 

Protip:您可以使用Cons.PrettyPrint以更易读的格式查看扩展的内容。

于 2015-06-10T08:00:05.797 回答