0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Ruby】同じ名前でも用途が違うもの ~ gets と puts ~

Posted at

はじめに

こんにちは!アメリカの大学で語学を学びながら、独学でソフトウェアエンジニアを目指している者です。
今回は私が勉強していて気付いた同じ名前のメソッドでも、動作が違うものがあったので紹介していきたいと思います。
あくまでも今回取り上げるのがgetsputsですがほかにもあればコメントで教えていただけると嬉しいです。

gets の場合

gets は、使用する環境や対象によって異なる用途を持つメソッドです。大きく分けて以下の2つに分かれます。

Kernel#gets(標準入力を取得する)

標準入力(ターミナルからの入力)を取得するために使います。以下は基本的な例です。

# 標準入力を取得
input = gets.chomp
puts "入力したのは: #{input}"

標準入力を待機し、chompメソッドで改行文字(\n)を切り捨てています。

IO#gets(ファイルやIOオブジェクトから読み取る)

File オブジェクトや他の IO オブジェクトに対して使うと、現在のファイルポインタ位置から1行ずつ取得します。

File.open("example.txt", "r") do |file|
  line = file.gets
  puts "ファイルの内容: #{line}"
end

ブロックを使用して、ファイルの内容を1行ずつ取得しています。
なお、ここでのgetsはキーボード入力とは関係ありません。

puts の場合

次に、puts について解説します。
puts は標準出力に文字列を表示するメソッドですが、実際には2種類の用途があります。

Kernel#puts(標準出力に表示する)

puts を通常使うと、標準出力(ターミナル)に文字列を表示します。

puts "Hello, Ruby!"

Progateで勉強する際に最初に扱うのはこのputsです。
ポイントは以下の通りです。

  • 自動的に改行が付加されます。
  • 標準出力の目的は、ターミナルへの出力であるということです。

IO#puts(ファイルやIOオブジェクトに書き込む)

File オブジェクトや他の IO オブジェクトに対して使うと、出力先がターミナルではなく、ファイルや仮想IOになります。

File.open("example.txt", "w") do |file|
  file.puts "Hello, File!"
end

コードのポイントは以下の通りです。

  • 出力先が指定されたIOオブジェクトです。今回の例でいうとexample.txtHello,File!を書き込みます。
  • 標準出力(ターミナル)には表示されません。

まとめ

Rubyでは同じ名前のメソッドでも、クラスや対象によって用途が変わることがあります。
getsputs はその典型例で、ターミナルでの操作とファイル操作で異なる使い方ができます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?