在Racket中将命令行参数解析为数字

4

我正在使用Racket编写一个简单的脚本,我想从命令行传入三个值。其中两个是浮点数,另一个是整数。

我最初的想法是尝试这样做:

(define args (current-command-line-arguments))
(define c (string->number(car args)))

但是结果并不如预期。我收到了这个错误:

car: contract violation
  expected: pair?
  given: '#("3" "2")

我新接触Racket,但我认为#代表过程而不是列表。我只需要参数列表。
我在Racket的文档中找到了一些关于解析命令行参数的信息,但它似乎是为解析开关/选项而设计的,而不是仅仅为值。
有人能提供任何建议吗?谢谢。

1
你链接的 command-line 宏确实可以使用 #:args 指定参数数量(这样可以省去一些检查代码)。但你说得对,你仍然需要自己检查/解析每个参数。 - Asumu Takikawa
1个回答

6

当前命令行参数的结果是一个向量。使用vector-ref代替car

(define c (string->number(vector-ref args 0)))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接