乐筑天下

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

变量 变量 ...

[复制链接]

3

主题

13

帖子

2

银币

初来乍到

Rank: 1

铜币
25
发表于 2009-2-18 13:45:15 | 显示全部楼层 |阅读模式

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

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

使用道具 举报

3

主题

13

帖子

2

银币

初来乍到

Rank: 1

铜币
25
发表于 2009-2-18 14:02:20 | 显示全部楼层
好吧,我知道这在lisp中是不可能的,我在想通过arx可能是...
回复

使用道具 举报

3

主题

13

帖子

2

银币

初来乍到

Rank: 1

铜币
25
发表于 2009-2-18 14:08:28 | 显示全部楼层
是什么驱使人们认为需要返回一个符号而不是一个值?
回复

使用道具 举报

3

主题

13

帖子

2

银币

初来乍到

Rank: 1

铜币
25
发表于 2009-2-18 14:09:39 | 显示全部楼层

哦,好吧,我不知道,但这并不意味着它不能完成。
回复

使用道具 举报

3

主题

13

帖子

2

银币

初来乍到

Rank: 1

铜币
25
发表于 2009-2-18 14:19:18 | 显示全部楼层
你可以返回一个符号,但是如果它是函数的局部变量,那么它将返回nil。
这又是什么驱动的?
回复

使用道具 举报

57

主题

559

帖子

13

银币

中流砥柱

Rank: 25

铜币
786
发表于 2009-2-18 14:20:47 | 显示全部楼层
我必须计算很多多边形和它的很多顶点以及很多其他实体,所以我通常用类似于:
(setq x (+ 1 x))或(setq x (- 1 x))等来“迭代”这些项目...
这很小,本身也没什么复杂的,但是对我来说,输入很多次是非常烦人的。然后一个构建我自己的版本:
  1. (DEFUN ++ (**)
  2.   (SET ** (1+ (EVAL **)))
  3. )
  4. (DEFUN -- (**)
  5.   (SET ** (1- (EVAL **)))
  6. )

这很好:
(++ 'a)将+1加到a上
( - 'a)将a减1
我只是想知道我是否可以避免这种情况,只是(++ a)而不是(++ 'a)
谢谢您的回答
回复

使用道具 举报

3

主题

13

帖子

2

银币

初来乍到

Rank: 1

铜币
25
发表于 2009-2-18 14:23:01 | 显示全部楼层
是的,我认为我的++不如简单的1+高效,但是我真的更喜欢花半秒多一点的时间(在充满3dplines的8.7mb文件中计时)而不是输入很多次(setq...).相信我,在几个小时的编码之后,即使是这么简单的(setq x (1+ x)),我也要经过两三次眼睛,所以绝对更容易阅读(++ 'x),而且我真的不在乎花这半秒钟。
如果它是1+或1-就好了,但是1+在普通lisp
exactamente eso中是非破坏性函数。
不重要的是,在ARX,您可以使用一个包含开放标识和其他arx (doslib,runtime odcl,lsp)的VLX...因为这不是问题。
我是ARX的乞丐,所以我真的不能这么做,我只是想知道这是否可行。
又是thnx。
回复

使用道具 举报

3

主题

13

帖子

2

银币

初来乍到

Rank: 1

铜币
25
发表于 2009-2-18 14:31:30 | 显示全部楼层
这很好,但恐怕有点困难:
从扫描的平面图来看,我有许多多边形、线条和文本,这应该考虑到其他图纸来组织,这次是由工程师用样条线直接在3D中制作的,我必须做的是:
检查图纸部分的Z值
如果两个多边形(高度)之间的差异大于X, 同一图形中的X变化
如果接下来的两条多边形的高度差大于X,则这些多边形的顶点数量必须与顶点数量更多的多边形(上方或下方的多边形)的顶点数量相同 ...同样,有时这个顶点可能有或多或少的点,这取决于地形
最后将样条线转换为样条线(不是通过pedit,原因很明显,我需要样条线而不是适应的样条线)
并根据高度将颜色更改为一些文本
将所有内容放在一个绘图中...
我已经决定使用列表而不是选择集
信不信由你,这并不难做到,难的是将伪代码翻译成真正的代码,其中像(setq x (1+ x))这样的东西开始到处出现。这就是(++ 'a)有所帮助的地方。我希望你能理解我的英语
回复

使用道具 举报

3

主题

13

帖子

2

银币

初来乍到

Rank: 1

铜币
25
发表于 2009-2-18 14:49:36 | 显示全部楼层

抛开所有其他因素...
  1. (defun ++ (**)
  2.     (set ** (1+ (eval **)))
  3. )
  4. (defun Test1 (/ a)
  5.     (setq a 0)
  6.     (repeat 1000
  7.         (setq a (1+ a))
  8.     )
  9. )
  10. (defun Test2 (/ a)
  11.     (setq a 0)
  12.     (repeat 1000
  13.         (++ 'a)
  14.     )
  15. )
  16. [quote]
  17. (benchmark '((Test1) (Test2)))

基准[2005年议会].............1024次迭代/相对计时所用的毫秒数:
(测试2).....3672 / 5.7285

(测试1)......641 / 1
[/quote]
我不认为(++ 'a)更容易阅读。
我认为速度损失也是不使用它的一个很好的理由。
回复

使用道具 举报

3

主题

13

帖子

2

银币

初来乍到

Rank: 1

铜币
25
发表于 2009-2-18 14:56:49 | 显示全部楼层
我同意这不是更有效,但它是这样工作的:
1200 plines与命令的所有进程需要
0.446秒,++
0.143秒,setq和1+
我真的不在乎0.303秒,以便更舒适地编写代码,即使需要一秒钟,我也会很高兴。我想在命令行实现-even-一个微调器,大概0.25秒以上没问题。
(setq x(1+x)) --> (++ 'x)不容易阅读?在这里我们不同意。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-2-6 04:02 , Processed in 0.207236 second(s), 72 queries .

© 2020-2025 乐筑天下

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