Любой способ справиться с переменной переменной? - PullRequest
0 голосов
/ 12 сентября 2018

Я сейчас использую R, но я думаю, что этот вопрос универсален

Когда вы пишете код функционально-ориентированным способом, код очень ясен, и каждая функция реализует одну цель.

Однакоесли функция выводит только целевой результат, вы не можете записать какой-то важный промежуточный результат, который может быть важным ключом для улучшения вашего кода и / или поиска ошибок

Если вы выводите оба последних результатаи важный промежуточный результат, который кажется избыточным и противоречит принципу «одна функция - одна цель» и делает ваш код трудным для чтения и трудным для записи.

У кого-нибудь есть мысли?

1 Ответ

0 голосов
/ 12 сентября 2018

Вопрос решается в LISP с несколькими значениями: функция может возвращать значение и вспомогательные, которые могут или не могут использоваться в следующих вычислениях. В R вы можете вернуть список результатов, которые действительно усложняют ваш код или вдохновлены функцией «regexpr», которая возвращает одно значение, но фактически два результата: позиция в качестве стандартного результата, но с атрибутом hiden длина соответствия.

> regexpr("ab","abc")
[1] 1
attr(,"match.length")
[1] 2
attr(,"index.type")
[1] "chars"
attr(,"useBytes")
[1] TRUE
> 

Пример:

f <- function (x) {
  z <- x + 1
  attr(z,"aux")<- x-1
  return(z)
}

f(5)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...