Печать функции и присвоение функции переменной и печать переменной, дающей разные результаты - PullRequest
0 голосов
/ 06 мая 2020

Я написал приведенный ниже код на R. Может ли кто-нибудь объяснить, почему выполнение функции и присвоение функции переменной и печать переменной дают разные результаты.

См. Код ниже.

fc <- function(num) {
      hello <- "Hello, world!\n"
      for(i in seq_len(num)) {
          cat(hello)
          }
      chars <- nchar(hello) * num
      chars
      }

Вывод f c (3)

Hello, world!
Hello, world!
Hello, world!
[1] 42

Теперь я назначаю fc(3) переменной alpha, и при печати alpha, посмотрите, что будет на выходе.

alpha<- fc(3)
Hello, world!
Hello, world!
Hello, world!

> print(alpha)
[1] 42

1 Ответ

1 голос
/ 06 мая 2020

print (или cat) отличается от return.

print (или cat) просто выводит значение в консоль, тогда как return value - это то, что фактически возвращается из функции, и может быть сохранено путем присвоения его объекту (a <- fc(3)) .

В вашем примере вы можете добавить столько операторов print или cat в функцию, но единственное возвращаемое значение - это последняя строка в функции или строка с явным оператором return.

fc <- function(num) {
   hello <- "Hello, world!\n"
   cat(rep(hello, num))
   cat('Printing more\n')
   print('new print')
   return(nchar(hello) * num)
}

a <- fc(3)
#Hello, world!
# Hello, world!
# Hello, world!
#Printing more
#[1] "new print"

a
#[1] 42
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...