乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 87|回复: 3

LISP结果缓冲区

[复制链接]

26

主题

128

帖子

2

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
231
发表于 2020-9-28 15:25:55 | 显示全部楼层 |阅读模式
我正在寻找一种方法来处理更复杂的结果缓冲区,如深度嵌套的列表。我希望它能把结果缓冲区转换成一个List
。如果有人有代码,他们想分享我会很感激。这是我目前掌握的情况。
  1. ///
  2. /// Converts a  to . If the Lisp arguments are below the minimum or above the maximum required, an exception will be thrown.
  3. ///
  4. ///
  5. ///
  6. ///
  7. ///
  8. ///
  9. public static List HandleLispArguments(ResultBuffer arguments, int minimum, int maximum)
  10. {
  11.     if (arguments == null)
  12.         throw new System.Exception("too few arguments");
  13.     TypedValue[] rawArgs = arguments.AsArray();
  14.     List Arguments = new List();
  15.             
  16.     // List Depth
  17.     int depth = 0;
  18.             
  19.     Action, int, object> Add = null;
  20.             
  21.     Add = (list, depth, item) =>
  22.     {
  23.         if (depth == 0)
  24.             list.Add(item);
  25.         else
  26.             Add((List)list[list.Count - 1], --depth, item);
  27.     };
  28.     foreach (TypedValue item in rawArgs)
  29.     {
  30.         object selected = item;
  31.         if (item.TypeCode == (short)LispDataType.ListBegin)
  32.         {
  33.             Add(Arguments, depth, new List());
  34.             depth++;
  35.             selected = null;
  36.         }
  37.         else if(item.TypeCode == (short)LispDataType.ListEnd)
  38.         {
  39.             depth--;
  40.             selected = null;
  41.         }
  42.         if (selected != null)
  43.             Add(Arguments, depth, selected);
  44.     }
  45.     if (Arguments.Count  maximum)
  46.         throw new System.Exception("too many arguments");
  47.     return Arguments;
  48. }

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

0

主题

9

帖子

1

银币

初来乍到

Rank: 1

铜币
9
发表于 2020-9-28 19:10:34 | 显示全部楼层
看看这里:https://forums.augi.com/showthread.php?154713-NET-Return-Conversion-to-TypedValue/page2,它看起来类似于你试图实现
干杯,马克
回复

使用道具 举报

1

主题

7

帖子

3

银币

初来乍到

Rank: 1

铜币
11
发表于 2020-9-29 15:38:03 | 显示全部楼层
我不知道结果如何,但Tony Tanzillo正在测试类似的东西…
http://www.theswamp.org/index.php?topic=43181.msg483994#msg483994
这是一个很好的例子
回复

使用道具 举报

15

主题

687

帖子

169

银币

中流砥柱

Rank: 25

铜币
582
发表于 2020-9-30 01:55:16 | 显示全部楼层
谢谢吉尔!
这是我正在寻找的完整实现。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2024-11-22 00:21 , Processed in 0.213760 second(s), 60 queries .

© 2020-2024 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表