답변:
puts
각 인수의 끝에 새 줄을 추가합니다 (없는 경우).
print
새 줄을 추가하지 않습니다.
예를 들면 다음과 같습니다.
puts [[1,2,3], [4,5,nil]]
돌아올 것이다 :
1 2 삼 4 5
print [[1,2,3], [4,5,nil]]
반품 하는 반면 :
[[1,2,3], [4,5, nil]]
puts는 nil 값을 출력하지 않지만 print는 어떻게 출력되는지 주목하십시오.
큰 차이점은 배열을 표시하는 것입니다. 특히 NIL을 가진 것들. 예를 들면 다음과 같습니다.
print [nil, 1, 2]
준다
[nil, 1, 2]
그러나
puts [nil, 1, 2]
준다
1
2
빈 항목이없는 항목은 나타나지 않으며 각 항목은 다른 행에 있습니다.
nil
print
각 인수 뒤에 $,
, to $stdout
,을 차례로 출력합니다 $\
. 그것은args.join($,) + $\
puts
세트 모두 $,
와 $\
에 "\ n"은 다음과 같은 일을한다 print
. 주요 차이점은 각 인수가 와 함께 새 줄이 있다는 것입니다 puts
.
사용자에게 친숙한 이름으로require 'english'
전역 변수에 액세스 할 수 있습니다 .
english
lib 에 대한 좋은 팁
API 문서 는 좋은 힌트를 제공합니다.
print() → nil
print(obj, ...) → nil
주어진 객체를 ios에 씁니다 . 를 반환
nil
합니다.쓰기 위해 스트림을 열어야합니다. 문자열이 아닌 각 주어진 객체는
to_s
메소드 를 호출하여 변환됩니다 . 인수없이 호출하면의 내용을 인쇄합니다$_
.출력 필드 구분 기호 (
$,
)가 아닌nil
경우 객체 사이에 삽입됩니다. 출력 레코드 구분 기호 ($\
)가 아닌nil
경우 출력에 추가됩니다....
puts(obj, ...) → nil
주어진 객체를 ios에 씁니다 . 개행 시퀀스로 끝나지 않은 개행 후에 개행을 씁니다. 를 반환
nil
합니다.쓰기 위해 스트림을 열어야합니다. 배열 인수와 함께 호출되면 각 요소를 새 줄에 씁니다. 문자열이나 배열이 아닌 각 주어진 객체는
to_s
메소드 를 호출하여 변환됩니다 . 인수없이 호출하면 단일 줄 바꿈이 출력됩니다.
위의 요점을 약간 실험 해 보면 차이점은 다음과 같습니다.
여러 인수 print
를 사용하여 '출력 필드 구분 기호' $,
(기본값은 없음)로 puts
구분하고 개행으로 구분합니다. puts
또한 마지막 인수 뒤에 개행을 print
넣지 만 그렇지 않습니다.
2.1.3 :001 > print 'hello', 'world'
helloworld => nil
2.1.3 :002 > puts 'hello', 'world'
hello
world
=> nil
2.1.3 :003 > $, = 'fanodd'
=> "fanodd"
2.1.3 :004 > print 'hello', 'world'
hellofanoddworld => nil
2.1.3 :005 > puts 'hello', 'world'
hello
world
=> nil
puts
자동으로 배열의 압축을 풉니 다 print
.
2.1.3 : 001> 인쇄 [1, [2, 3]], [4] [1, [2, 3]] [4] => nil 2.1.3 : 002> 풋 [1, [2, 3]], [4] 1 2 삼 4 => nil
print
인수없이 인쇄하고 $_
(마지막으로 읽은 것 gets
) puts
개행 을 인쇄합니다.
2.1.3 :001 > gets
hello world
=> "hello world\n"
2.1.3 :002 > puts
=> nil
2.1.3 :003 > print
hello world
=> nil
print
$\
인쇄 후 출력 레코드 구분 기호 를 puts
쓰고이 변수는 무시합니다.
mark@lunchbox:~$ irb
2.1.3 :001 > $\ = 'MOOOOOOO!'
=> "MOOOOOOO!"
2.1.3 :002 > puts "Oink! Baa! Cluck! "
Oink! Baa! Cluck!
=> nil
2.1.3 :003 > print "Oink! Baa! Cluck! "
Oink! Baa! Cluck! MOOOOOOO! => nil
puts
to_s
각 인수 의 를 호출하고 새 줄로 끝나지 않으면 각 문자열에 새 줄을 추가합니다.
print
그냥를 호출하여 각 인수를 출력하십시오 to_s
.
예를 들면
puts "one two"
:
one two
{새 줄}
puts "one two\n"
:
one two
{new line} #puts는 문자열이 새 줄로 끝나기 때문에 결과에 새 줄을 추가하지 않습니다.
print "one two"
:
one two
print "one two\n"
:
one two
{새 줄}
그리고 출력하는 또 다른 방법이 있습니다. p
각 객체에 대해 obj.inspect를 직접 작성하고 프로그램의 표준 출력에 개행을 씁니다.
디버깅 메시지를 출력하는 데 도움이됩니다.
p "aa\n\t"
:aa\n\t
를 사용하여 문자열 내에서 배열을 출력 puts
하려면 다음을 사용하는 것과 동일한 결과를 얻습니다 print
.
puts "#{[0, 1, nil]}":
[0, 1, nil]
그러나 인용 된 문자열을 사용하지 않으면 예. 유일한 차이점은 우리가 사용할 때 줄 바꿈 puts
입니다.
printf
대신 대신 사용 puts
하면 동일한 결과를 얻을 수 있지만 실제로는 그렇지 않습니다. puts
변형 마지막에 개행을 추가하는 동안 printf
하나하지 않습니다, 단지 문자열로 보간에는 배열이 없습니다 경우 등이있다. (문자열 리터럴을 평가할 때 반드시 그렇게, 이후 보간이 발생합니다.)