需要帮助理解 BSL (DrRacket) 中的功能
Need help understanding function in BSL (DrRacket)
语言 BSL - DrRacket(球拍变体)
问题:我需要了解下面的函数到底做了什么。具体是子串位,我不明白它是如何判断一个字符串是否有“?”的最后选择是否追加“?”到消耗的字符串。
(define (ensure-question str)
(if (string=? (substring str (- (string-length str) 1)) "?")
str
(string-append str "?")))
(substring s position)
函数 returns 从某个位置开始的字符串 s
的子串。例如 :
(substring "Apple" 1)
returns "pple"
因为我们从第一个字符开始下标。
(substring "Apple" ( - (string-length "Apple") 1))
将 return "e"
.
我们采用仅包含最后一个字符 (- (string-length str) 1))
的下标,并使用函数 string=?
检查它是否等于 "?"
。
语言 BSL - DrRacket(球拍变体)
问题:我需要了解下面的函数到底做了什么。具体是子串位,我不明白它是如何判断一个字符串是否有“?”的最后选择是否追加“?”到消耗的字符串。
(define (ensure-question str)
(if (string=? (substring str (- (string-length str) 1)) "?")
str
(string-append str "?")))
(substring s position)
函数 returns 从某个位置开始的字符串 s
的子串。例如 :
(substring "Apple" 1)
returns "pple"
因为我们从第一个字符开始下标。
(substring "Apple" ( - (string-length "Apple") 1))
将 return "e"
.
我们采用仅包含最后一个字符 (- (string-length str) 1))
的下标,并使用函数 string=?
检查它是否等于 "?"
。