打印和返回之间的区别

Abu*_*urd 3 ruby ruby-on-rails

当在Ruby中的方法内部时,print和之间有什么区别return

def squared_number(num)
  return (num**2)
end
Run Code Online (Sandbox Code Playgroud)

def squared_number(num)
  print (num**2)
end
Run Code Online (Sandbox Code Playgroud)

Blu*_*Ice 5

很多.

print 将在最后输出没有换行符的号码.

return 将返回方法中的数字.


Bor*_*ski 5

return结束当前方法返回传递的参数作为结果.例:

def add(a, b)
    return a + b
end

c = add(1, 2)
Run Code Online (Sandbox Code Playgroud)

在Ruby中,last语句自动返回值.所以我们可以add像这样定义我们的方法

def add(a, b)
    a + b
end
Run Code Online (Sandbox Code Playgroud)

但是return,如果要在最后一行之前结束方法执行,则非常有用.例如:

def specialAdd(a, b)
    if a < 0
        return -1
    end
    a + b
end
Run Code Online (Sandbox Code Playgroud)

如果第一个参数为负,则此方法始终返回-1.在所有其他情况下,它就像add方法一样工作.

另一方面,该print方法将传递的参数输出到nil作为结果返回的标准输出(控制台).我们可以使用irb- 交互式ruby控制台看到它:

$ irb
irb(main):002:0> print "Hello World\n"
Hello World
=> nil
irb(main):003:0> 
Run Code Online (Sandbox Code Playgroud)

在这里,我们看到"Hello World"加上换行印刷.print方法的返回值是nil.