puts 메소드, print 메소드, p 메소드의 차이

2066 단어 루비
방법
출력 후 개행
메소드 자체의 반환값
개행 문자를 포함한 경우
배열을 출력하는 경우
호출하는 메소드


puts
개행을 더해 출력한다.
nil
줄 바꿈
배열의 []를 포함하지 않고 각 요소마다 개행
to_s

인쇄
개행을 추가하지 않는다.
nil
줄 바꿈
배열의 []를 포함한 개행 없음
to_s

p
개행을 더해 출력한다.
다만 문자열을 출력하면 그 문자열이 더블 쿼트로 둘러싸인다.
인수의 오브젝트 그 자체가 개행되지 않고/n 그대로 표시된다
배열의 []를 포함한 개행 없음
inspect

putsメソッドprintメソッド는 내부적으로 인수로 전달 된 객체에 대해 to_sメソッド를 호출하여 문자열로 변환합니다.
pメソッドto_sメソッド 대신 inspectメソッド 를 호출합니다.
캐릭터 라인이 출력 후에 더블 쿼트 첨부가 되어 있던 이유로서 내부적으로 String 클래스의 inspect 메소드가 불려 가 값이 출력되고 있다.

inspect 메소드는 개발자에게 유용한 정보를 포함합니다.

차이에 대해 실제로 검증한 결과👇




모듈 이름이 실행 결과로 출력.
대상이 클래스인 경우, #<クラス名:オブジェクトid インスタンス変数> 가 실행 결과로서 출력.



클래스에 대해 to_sメソッド 와 비교하면inspectメソッド 에서는 클래스 이름과 객체 id와 인스턴스 변수를 출력,to_sメソッド는 클래스 이름과 객체 id만 출력하고 인스턴스 변수는 출력하지 않습니다.



배열 해시 모두 값이 그대로 표시됩니다.



문자열에 관해서 to_s와 비교하면 더블 쿼트로 둘러싸여 있는지 여부의 차이가 있다.

nil 에 관해서는 to_s 로 출력했을 경우는 실행 결과로서 표시되지 않는다.

좋은 웹페이지 즐겨찾기