Computer >> 컴퓨터 >  >> 프로그램 작성 >> Ruby

Ruby Gets 및 Ruby Chomp 메서드를 사용하는 방법

Ruby 프로그램을 작성 중이고 사용자에게 질문하고 싶습니다...

어떻게 할 수 있나요?

음, Ruby gets를 사용할 수 있습니다. 사용자 입력을 읽는 방법입니다.

gets을 호출할 수 있습니다. .

그런 다음 프로그램은 키보드로 무언가를 입력하고 Enter 키를 누르기를 기다리기 시작합니다.

결과는?

문자열을 반환합니다.

이 문자열에는 사용자(또는 사용자)가 입력한 내용이 있으므로 이 문자열을 변수에 할당하면 사용할 수 있습니다.

일반적인 예는 인사말 프로그램입니다.

이렇게 생겼어요 :

name = gets.chomp

puts "Hello #{name}, nice to meet you!"
<블록 인용>

#{name} 이것을 문자열 보간이라고 합니다.

이것을 시도하고 어떻게 작동하는지 직접 확인하십시오.

  • 먼저 이 코드를 "greeting.rb" 파일에 저장합니다.
  • 그런 다음 "ruby Greeting.rb"(터미널 프로그램에서)와 함께 사용

이름을 입력하면 프로그램이 여러분을 맞이합니다!

멋지네요.

지금 :

chomp는 무엇인가요? 비즈니스에 관한 모든 것?

gets의 결과를 변경하는 Ruby 메소드입니다. 매우 구체적인 방식으로.

제거해 보세요.

점 포함(. ) 앞에 있으므로 name = gets가 됩니다. , name = gets.chomp 대신 .

코드를 저장하고 다시 실행하면...

인사말이 이제 전체 인사말이 한 줄에 있는 대신 두 줄로 나누어진 것을 볼 수 있습니다.

무슨 일이야?

자세히 알아보기 위해 파헤쳐 보겠습니다!

줄 바꿈 및 특수 문자 이해

Ruby는 gets 동안 프로그램에 입력하는 모든 것을 읽습니다. 메서드가 활성화되어 있습니다.

인사말 프로그램 , 여기에는 귀하의 이름이 포함됩니다.

그리고 인사말을 두 줄로 나누는 특별한 "개행" 문자!

새 줄 문자 만나기 :

\n

이러한 종류의 특수 문자는 일반적으로 보이지 않으며 새 줄, 공백, 색상 등의 형태로만 나타납니다.

그것들을 보고 싶다면 $10,000의 가격에 마법의 손전등이 필요합니다.

농담이에요!

p만 있으면 됩니다. 메소드 또는 inspect 방법.

사용 예 :

p name
# "Jesus\n"

있습니다!

"새 줄" 문자(\n ).

이것은 우리의 원래 질문으로 돌아갑니다...

chomp란? 모든 것에 대해?

chomp의 목적 문자열 끝에 있는 개행 문자를 제거하는 것입니다.

보시다시피 매우 유용합니다!

또 다른 예

이 줄 바꿈 문자 또는 기타 특수 문자가 있으면 인쇄할 때 문자열이 어떻게 보이는지보다 더 많은 영향을 미칩니다.

또한 if 문에도 영향을 줄 수 있습니다!

:

name = gets

if name == "David"
  puts "Hello David, we were expecting you!"
end

이 코드에서 chomp를 사용하지 않으면 gets 사용 , 두 문자열은 개행 문자(\n ), 그래서 이것은 false로 평가됩니다. .

그런데...

이는 gets 외부에서 가져온 문자열에도 적용됩니다. , 데이터베이스, 파일 또는 기타 소스를 읽음으로써 얻은 데이터와 같습니다.

이 특수 문자를 주시하세요!

찹 대 찹 대 스트립

사용자 입력을 정리하는 데 도움이 될 수 있는 또 다른 두 가지 방법은 chop입니다. &strip .

strip 사용 공백을 제거할 수 있습니다.

:

"    John Smith    ".strip

chop 사용 항상 마지막 문자를 제거합니다.

첫 번째 문자 제거

또 다른 작업은 처음부터 문자를 제거하는 것입니다.

이렇게 하면 됩니다 :

str = "Mr. John"

str[0..3] = ""

str
# "John"

이렇게 하면 처음 4개의 문자가 제거됩니다.

두 개의 Get 메소드? 음모가 두꺼워집니다!

특별한 경우가 있습니다...

$stdin.gets를 사용해야 하는 위치 gets 대신 .

이러한 오류가 발생하는 경우 :

`gets': No such file or directory @ rb_sysopen

왜?

gets의 두 가지 버전이 있기 때문에 방법.

  • 기본 버전은 파일 이름 읽기를 시도합니다.
  • 대체 버전($stdin.gets ) 항상 사용자 입력에서 읽습니다.

이제 gets를 사용하는 동안 이와 같은 오류가 표시되면 , $stdin.gets로 변경해 보십시오. .

요약

get &chomp 메소드, 그 기능, 작동 방식 및 유용한 이유에 대해 배웠습니다!

이 Ruby 튜토리얼을 통해 계속 학습하세요.

읽어 주셔서 감사합니다! 🙂