我对Scheme很新,我使用DrRacket,我希望得到一些急需的帮助。
我的第一个任务是从非空字符串中提取第一个字符,这是我成功完成的。
;;Signature: string-first: string -> string
;;Purpose: To extract the first character from a non-empty string
;;Tests
(check-expect (string-first "cookies") "c")
(check-expect (string-first "party") "p")
;;Definition: string-first
(define (string-first str)
(string-ith str 0))
现在,我的任务是从非空字符串中提取最后一个字符。我无法弄清楚这一点。我的猜测是它涉及"字符串长度"与" string-ith组合使用。"
希望有人可以帮助我。提前谢谢。
答案 0 :(得分:4)
你是在正确的轨道上,假设字符串是非空的,实现就像这样简单:
(define (string-last str)
(string-ref str (sub1 (string-length str))))
说明:
string-ref
程序,我猜测的程序与string-ith
的执行方式相同(总是尝试使用现有程序)sub1
减去一个单位)string-ref
和string-length
,记住最后一个字符位于索引length-1