Sim*_*Sim 4 string types sbcl common-lisp
基本上我会说你必须使用(typep var 'string-type),但据我所知,没有像字符串这样的类型.
通过类型结果确定类型
(type-of "rowrowrowyourboat")
> (SIMPLE-ARRAY CHARACTER (17))
Run Code Online (Sandbox Code Playgroud)
这是一种我能用通用方式寻找的类型,因为寻找SIMPLE-ARRAY不会有任何好处:
(typep "rowrowrowyourboat" 'simple-array)
> t
(typep (make-array 1) 'simple-array)
> t
Run Code Online (Sandbox Code Playgroud)
并且使用直观的动态确定示例字符串类型的hack也没有任何好处,因为它们的长度不一样(大多数时候)
(typep "rowrowrowyourboat" (type-of "string"))
> nil
Run Code Online (Sandbox Code Playgroud)
所以我想知道检查给定变量是否为string类型的规范方法是什么?
大多数类型在CL中都有一个谓词,即使字符串是一系列字符,它也存在一个函数 stringp,它完全符合你的要求.
(stringp "getlydownthestream") ; ==> T
Run Code Online (Sandbox Code Playgroud)
它在文档中说,这与写作相同
(typep "ifyouseeacrocodile" 'string) ; ==> T
Run Code Online (Sandbox Code Playgroud)