내가 쓴 코드 행의 예를 들어 print
와 puts
다른 결과를 생성합니다.
1.upto(1000).each { |i| print i if i % 2 == 0 }
답변
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
빈 항목이없는 항목은 나타나지 않으며 각 항목은 다른 행에 있습니다.
답변
print
각 인수 뒤에 $,
, to $stdout
,을 차례로 출력합니다 $\
. 그것은args.join($,) + $\
puts
세트 모두 $,
와 $\
에 “\ n”은 다음과 같은 일을한다 print
. 주요 차이점은 각 인수가 와 함께 새 줄이 있다는 것입니다 puts
.
사용자에게 친숙한 이름으로require 'english'
전역 변수에 액세스 할 수 있습니다 .
답변
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
입니다.