Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 检查字符串中是否有小写字符_String_Common Lisp_Lowercase - Fatal编程技术网

String 检查字符串中是否有小写字符

String 检查字符串中是否有小写字符,string,common-lisp,lowercase,String,Common Lisp,Lowercase,我需要返回真或假 True如果至少有一个小写字符 False无小写字符 我试着用loop和lambda函数来实现它 像这样的 (defun check-lower-word (word) (loop for ch across word ((lambda (c) (if (lower-case-p c) return T) ch) ) ) 如果从来没有工作过,我就需要False“如果”我是按照 (defun check-lower-word

我需要返回真或假

  • True
    如果至少有一个小写字符
  • False
    无小写字符
我试着用loop和lambda函数来实现它 像这样的

(defun check-lower-word (word)
    (loop
        for ch across word 
        ((lambda (c) (if (lower-case-p c) return T) ch)
    )
)
如果从来没有工作过,我就需要False“如果”

我是按照

(defun check-lower-word (word)
    (block outer
        (loop
            for ch across word do
                (if (lower-case-p ch) (return-from outer T))
        )
    )
)

通过预定义的函数,您可以使用
一些
():

对于
循环
语法(),也有类似的操作:

最后,请注意,
loop
在迭代终止而不产生结果时总是返回
nil
,因此
loop
的不那么简洁的用法可能是:

CL-USER> (loop for x across "AbC" if (lower-case-p x) do (return t))
T
CL-USER> (loop for x across "ABC" if (lower-case-p x) do (return t))
NIL
代码错误 您的代码与括号不平衡,结尾缺少一个右括号:

(defun check-lower-word (word)
    (loop
        for ch across word 
        ((lambda (c) (if (lower-case-p c) return T) ch)
    )
) ; <-- closes "(loop"
使用中间文字lambda在这里不会带来任何结果

同样,上面的内容是:如果
ch
是小写的,则if的值是绑定到
return
变量的值,否则它是T。您确实缺少
(return T)
周围的参数。“单臂”的
(如果是tx)
最好写成
(如果是tx)

另一种方法 您已经有了
some
loop
的示例,您还可以使用短路
映射

(defun check-lower-word (word)
  (block nil
    (map ()
         (lambda (c)
           (when (lower-case-p c)
             (return t)))
         word)))

使用
nil
作为第一个参数调用表示对序列进行迭代以获得效果并返回nil。对于序列中的每个字符(列表或向量),当字符为小写时,返回T。
返回
在NIL块之前退出迭代。

欢迎使用SO!当Renzo完全回答了你的问题时,你应该考虑读一些关于CL和更重要的CL.的基本语句,如果你使用<代码>从返回,无论如何,你可以使用由函数本身建立和命名的隐式块:<代码>(从校验下词T返回)< /代码>。
(defun check-lower-word (word)
    (loop
        for ch across word 
        ((lambda (c) (if (lower-case-p c) return T) ch)
    )
) ; <-- closes "(loop"
(if (lower-case-p ch) return T)
(defun check-lower-word (word)
  (block nil
    (map ()
         (lambda (c)
           (when (lower-case-p c)
             (return t)))
         word)))