Как объединить эти две функции с той, которая использует необязательный параметр?

Возьмем, к примеру, get-x-depth-for-yz-grid.

(defun get-x-depth-for-yz-grid (planes//yz-plane grid)
  (let ((planes (get-planes-including-yz-grid-in planes//yz-plane grid)))
    (unless (evenp (length planes))
      (error "error in get-x-depth-for-yz-grid"))
    (sort planes (lambda (p1 p2) (< (caar p1) (caar p2))))
    (do* ((rest planes (cddr rest)) (res 0))
         ((null rest) res)
      (incf res (- (caar (second rest)) (caar (first rest)))))))

style -> ERROR можно заменить ASSERT.

Возможная ошибка -> SORT может быть разрушительным -> убедитесь, что вы иметь свежий список. Если это уже свежо выделено get-planes-including-yz-grid-in, тогда нам это не нужно.

bug -> SORT возвращает отсортированный список. Сортированный список, возможно, не побочный эффект. -> использовать возвращаемое значение

style -> DO заменено на LOOP.

style -> значение CAAR нечеткое. Найдите лучшее имя или используйте другие структуры данных.

(defun get-x-depth-for-yz-grid (planes//yz-plane grid)
  (let ((planes (get-planes-including-yz-grid-in planes//yz-plane grid)))
    (assert (evenp (length planes)) (planes)
      "error in get-x-depth-for-yz-grid")
    (setf planes (sort (copy-list planes) #'< :key #'caar))
    (loop for (p1 p2) on planes by #'cddr
          sum (- (caar p2) (caar p1)))))
0
задан 18 January 2019 в 17:46
поделиться

2 ответа

def http_get(url, params=None):
    with urllib.request.urlopen(url, params) as w:
        return w.read()
0
ответ дан unlut 18 January 2019 в 17:46
поделиться

если вы передаете все аргументы напрямую, вы можете утверждать, что вам следует просто использовать *args.

def http_get(*args):
    with urllib.request.urlopen(*args) as w:
        return w.read()

http_post = http_get
0
ответ дан Adam Smith 18 January 2019 в 17:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: