You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么我的Racket程序运行(fce cm mm 5)时无输出也无报错?

问题根因
  • 传参类型不匹配:你执行(fce cm mm 5)时,传入的cm、mm是未定义的标识符,不是代码逻辑中判断的字符串类型,因此fce函数的cond分支全部匹配失败,Racket中无匹配分支的cond会返回空值,不会报错也不会有输出。
  • 换算逻辑存在批量错误:即便你传入正确的字符串参数,所有换算函数的换算系数、输出文本的单位硬编码错误,也会得到错误结果。
修复步骤
  1. 调用时传入字符串格式的单位:即改为(fce "cm" "mm" 5)
  2. 修正各个换算函数的系数与输出文本,同时新增else分支处理不支持的单位提示,修复后的完整代码如下:
#lang racket
(define eq equal?)
(define (fce jednotka jednotka2 cislo)
  (cond
    ((eq jednotka "mm") (mm cislo jednotka2))
    ((eq jednotka "cm") (cm cislo jednotka2))
    ((eq jednotka "m") (m cislo jednotka2))
    ((eq jednotka "km") (km cislo jednotka2))
    (else (format "不支持的输入单位:~a" jednotka))))

(define (mm c j)
  (cond
    ((eq j "mm") (format "~a mm = ~a ~a" c c j))
    ((eq j "cm") (format "~a mm = ~a ~a" c (* c 0.1) j))
    ((eq j "m") (format "~a mm = ~a ~a" c (* c 0.001) j))
    ((eq j "km") (format "~a mm = ~a ~a" c (* c 0.000001) j))
    (else (format "不支持的目标单位:~a" j))))

(define (cm c j)
  (cond
    ((eq j "mm") (format "~a cm = ~a ~a" c (* c 10) j))
    ((eq j "cm") (format "~a cm = ~a ~a" c c j))
    ((eq j "m") (format "~a cm = ~a ~a" c (* c 0.01) j))
    ((eq j "km") (format "~a cm = ~a ~a" c (* c 0.00001) j))
    (else (format "不支持的目标单位:~a" j))))

(define (m c j)
  (cond
    ((eq j "mm") (format "~a m = ~a ~a" c (* c 1000) j))
    ((eq j "cm") (format "~a m = ~a ~a" c (* c 100) j))
    ((eq j "m") (format "~a m = ~a ~a" c c j))
    ((eq j "km") (format "~a m = ~a ~a" c (* c 0.001) j))
    (else (format "不支持的目标单位:~a" j))))

(define (km c j)
  (cond
    ((eq j "mm") (format "~a km = ~a ~a" c (* c 1000000) j))
    ((eq j "cm") (format "~a km = ~a ~a" c (* c 100000) j))
    ((eq j "m") (format "~a km = ~a ~a" c (* c 1000) j))
    ((eq j "km") (format "~a km = ~a ~a" c c j))
    (else (format "不支持的目标单位:~a" j))))

修复后执行(fce "cm" "mm" 5),会返回正确结果"5 cm = 50 mm"。

内容的提问来源于stack exchange,提问作者Aleksandre Khachaturov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 15:45:01