首页 > 解决方案 > 球拍中的点是什么意思?

问题描述

.in是什么(define-syntax-rule (id . pattern) template)意思?它只是define-syntax-rule语法的一部分还是在球拍中意味着一些特殊的东西?

标签: racket

解决方案


它是定义的标准可变参数语法(过程相同):名称之后和点之前的所有标识符都被视为必需参数,点之后是一个可变长度列表(包含零个或多个元素)和可选参数参数。例如:

(define (test x . args)
  (displayln x)
  (displayln args))

(test)
=> arity mismatch, the expected number of arguments
   does not match the given number

(test 1)
=> 1
   ()

(test 1 2)
=> 1
   (2)

(test 1 2 3)
=> 1
   (2 3)

可以有零个必需参数,使所有参数都是可选的:

(define (test . args)
  (displayln args))

(test)
=> ()

(test 1)
=> (1)

(test 1 2)
=> (1 2)

在 的情况下define-syntax-rule,这意味着在id零个或多个模式之后:

(define-syntax-rule (id . pattern) template)

推荐阅读