lisp语言中如何判断一个输入是不是表

lisp语言中如何判断一个输入是不是表,第1张

我个人觉得一般表的话,你一眼就看得出的,

但是如果你实在要验证,我这里有一个方法,其他具体我没试,但是这个方法肯定可以:

LISP里面有个函数计算表的长度,格式是:

(vl-list-length list-or-cons-object)

其中list-or-cons-object表示表或点对的表

如果参数是个真正的表,则返回包含表的长度的整数,如果是表对表,则返回NIL

举例:

(vl-list-length nil)

0

(vl-list-length '(1 2))

2

(vl-list-length '(1 2 3))

nil

其实这个,你只要拿个需要以表作为参数的函数去验证,不就知道了吗?

我这只是一个抛砖引玉,希望你能发现更好的方法

;直线、多段线长度标注 by Dnbc

(defun c:cdbz()

(setq cm (getvar "cmdecho")) (setvar "cmdecho" 0)

(setq os (getvar "osmode")) (setvar "osmode" 0)

(command "_undo" "be")

(if (setq wzgd (getreal (strcat "\n 文字高度: <" (rtos (getvar "textsize")) ">")))

(setvar "textsize" wzgd)

(setq wzgd (getvar "textsize"))

)

(if (= (setq pyjl (getreal (strcat "\n 离线距离: <02>"))) nil)

(setq pyjl 02)

)

(if (setq ssa (ssget '((0 "LINE,LWPOLYLINE,POLYLINE"))))

(progn

(if (= (setq pyjl (getreal (strcat "\n 输入离线距离: <02>"))) nil)

(setq pyjl 02)

)

(setq n (sslength ssa) i 0)

(repeat n

(setq ent (ssname ssa i)

dxf (entget ent)

nam (cdr (assoc 0 dxf))

)

(cond ((= nam "POLYLINE")

(setq pts nil)

(while (/= (cdr (assoc 0 (setq dxf (entget (setq ent (entnext ent)))))) "SEQEND")

(setq pts (cons (cdr (assoc 10 dxf)) pts))

)

(setq pts (reverse pts))

)

(t

(setq pts (mapcar 'cdr (vl-remove-if-not '(lambda(x)(member (car x) '(10 11))) dxf)))

)

)

(setq m (1- (length pts)) j 0)

(repeat m

(setq p1 (nth j pts) p2 (nth (1+ j) pts)

jl (strcat "L=" (rtos (distance p1 p2) 2 3) "m")

;jl (rtos (distance p1 p2) 2 3) ;也可以用此句

jd (angle p1 p2)

pm (polar (mapcar ' '(05 05) (mapcar '+ p1 p2)) (+ jd ( 05 pi)) pyjl)

jd (angtos jd 2 6)

)

(command "_text" "j" "bc" pm wzgd jd jl)

(setq j (1+ j))

)

(setq i (1+ i))

)

)

)

(command "_undo" "e")

(setvar "osmode" 0) (setvar "cmdecho" 0)

(princ)

)

import javaioBufferedReader;

import javaioIOException;

import javaioInputStreamReader;

public class Testzhidao {

public static void main(String[] args) throws IOException {

BufferedReader reader = new BufferedReader(new InputStreamReader(Systemin));

String arg = readerreadLine();

String[] num = argsplit(" ");

int a = IntegervalueOf(num[0]);

int b = IntegervalueOf(num[1]);

int c = IntegervalueOf(num[2]);

Systemoutprintln("a="+ a);

Systemoutprintln("b="+ b);

Systemoutprintln("c="+ c);

}

}

以上就是关于lisp语言中如何判断一个输入是不是表全部的内容,包括:lisp语言中如何判断一个输入是不是表、哥们,问你个关于lisp的问题,希望你能帮我,谢谢、java中通过键盘输入获取多个参数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/10145344.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存