
No.8ベストアンサー
- 回答日時:
>「IOクラスは、fileクラスの包含関係ではないか?」
回答:
インクルードの意味が
「IOクラスはFileクラスを包含している」ということであれば、
そうなります。
No.7
- 回答日時:
>IOクラスしか使えないもの又は、StringIOクラスでしか使えないものも、あるのでしょうか?
回答:すみません。そこまで調べたことがないので、詳細はわかりません。
あるかもしれないし、ないかもしれないです。
興味があれば、下記のURLに各クラスのメソッドがあるので、
上記に該当するものがあるか調べてみてください。
Fileクラス
https://docs.ruby-lang.org/ja/latest/class/File. …
IOクラス
https://docs.ruby-lang.org/ja/latest/class/IO.html
StringIOクラス
https://docs.ruby-lang.org/ja/latest/class/Strin …
No.6
- 回答日時:
>質問5の追加説明についてですが、Fileクラスは、File.openを使って生成し、IOクラスをインクルードしていての所は、あるサイトを見て、IOクラスがFileクラスをインクルードしているのではないかと思ったのですが、どうなのでしょうか?
すみません。インクルードしているとは、どのような意味でしょうか。
「インクルードしている」の意味がよくわかりませんでした。
No.4
- 回答日時:
>質問3の追加質問
>STDOUTとは、一体何なのでしょうか?
回答:
標準出力のことです。
通常は画面に割り当てられています。
p ,puts,printなどの出力先はSTDOUT(=画面)になります。
>質問5の追加質問
>IO(Fileを含む)とは、fileは、入出力を行うからでしょうか?
回答:Fileクラスのことです。
下記を参照ください。
https://docs.ruby-lang.org/ja/latest/class/File. …
No.3
- 回答日時:
>質問5 「IOクラスは、openによって返されるインスタンスです。
」の、記述はどこに書かれているのでしょうか?回答:下記を参照してください
https://docs.ruby-lang.org/ja/latest/method/Kern …
に
「file をオープンして、IO(Fileを含む)クラスのインスタンスを返します。」とかかれています。
No.2
- 回答日時:
>質問1 ①「fileはStringIOクラスである。
」というのは、どこにそんな記述があるのでしょうか?回答
https://docs.ruby-lang.org/ja/latest/library/ope …
に
「開いたファイルオブジェクトは StringIO もしくは Tempfile です」
と書いてあります。
>質問2 念の為の質問ですが、StringIOクラスは、IOクラスとは、無関係と言う事は、この質問文の件については、IOクラスは無かった事として解釈してもよろしいでしょうか?
回答:
はい、それで問題ありませんが、但し、IOクラスのほとんどのメソッドを同じような感覚でStringIOクラスでも使用できるので
IOクラスについて知っておくことは必要です。
>質問3「特にStringIOクラスはIOクラスとは関係ないそうです。」は、これも、どこにそんな記述があるのでしょうか?
回答:
https://xtech.nikkei.com/it/article/COLUMN/20060 …
に
「StringIOクラスとSTDOUTのクラス(IO)には継承関係はありませんが,StringIOクラスはIOクラスの持つほとんどすべてのメソッドを備えています。
ですから,StringIOクラスはほとんどの局面でIOと同じように使うことができます。」
と書いてあります。
又、
「ruby StringIOクラスとIOクラスの関係」で検索すると
AIの回答で
RubyのStringIOクラスとIOクラスは、継承関係はありませんが、StringIOクラスはIOクラスのほとんどのメソッドを備えています。
そのため、StringIOクラスはIOクラスと同じように使用することができます。
【StringIOクラスについて】
文字列に対してファイルと同じように入出力を行うことができるクラスです
文字列にファイルオブジェクトのインタフェースを与えることができ、文字列をファイルオブジェクトのように扱うことができます
【IOクラスについて】STDOUTのクラスです。
と返ってきます。
>質問4 「但し、IOクラスのほとんどのメソッドを同じような感覚でStringIOクラスでも使用できるということなのでStringIO#each_lineも使用できます。」
についてですが、これも、どこにそんな記述があるのでしょうか?
回答:
質問3の回答を参照ください。
又、
https://docs.ruby-lang.org/ja/latest/class/Strin …
にeach_lineメソッドがあります。
>それと、StringIO#each_lineの#は、何でしょうか?
回答:
クラス名#メソッド名は、そのクラスのインスタンスメソッドを表す記法です。
従って、StringIO#each_lineはStringIOクラスのeach_lineのメソッドであるということを示しています。
下記参照
https://teratail.com/questions/224704
https://docs.ruby-lang.org/ja/latest/doc/help.html
に
記号の説明 で
String#size の # って何?
「#」はインスタンスメソッドであることを表します。
と書いてあります。
No.1
- 回答日時:
require 'open-uri'
file = URI.open('http://www.google.co.jp')
file.each_line {|line|
print line
}
file.close
上記のスクリプトで、何故 each_line が使えるのかということを、以下のように説明したつもりでした。
①fileはStringIOクラスである。
②StringIOクラスはIOクラスを継承している。
③IOクラスにはeach_lineメソッドがある。
④よって、StringIOでもeach_lineメソッドを使用できる。(file.each_lineメソッドが使用できる)
というつもりで書いたのですが、
②のStringIOクラスはIOクラスを継承している。 は誤りで、
特にStringIOクラスはIOクラスとは関係ないそうです。
但し、IOクラスのほとんどのメソッドを同じような感覚でStringIOクラスでも使用できるということなので
StringIO#each_lineも使用できます。
IOクラスのeach_lineは、ファイルを1行ずつ処理するので、
StringIOクラスのeach_lineも、同様に1行ずつ処理することになります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ruby loopメソッド 変数
Ruby
-
ruby raise句
Ruby
-
Ruby newメソッド
Ruby
-
-
4
ruby begin句
Ruby
-
5
ルビー言語 ライブラリー 追記
Ruby
-
6
ruby 配列
Ruby
-
7
ruby loopメソッド 変数(再喝)
Ruby
-
8
ruby while式
Ruby
-
9
ruby OpenURI::Meta
Ruby
-
10
ルビー言語 csvファイル part2
Ruby
-
11
ruby ensure句
Ruby
-
12
Ruby require ライブラリー
Ruby
-
13
ルビー言語 ライブラリー
Ruby
-
14
HTML &CSSとHTML5&CSS3 違い
HTML・CSS
-
15
Ruby 引数
Ruby
-
16
Ruby 格納
Ruby
-
17
ルビー言語 ライブラリー(再々渇)
Ruby
-
18
HTML&CSS メディアクエリ
HTML・CSS
-
19
HTML&CSSについて。
HTML・CSS
-
20
HTML&CSS メディアクエリについて。
HTML・CSS
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSSのhtmlへの紐付けについ...
-
教えてください
-
あせんうぶり言語
-
パソコンのスクリーンセーバー...
-
クリスタルレポートで困ってい...
-
Gitのクローンについて
-
パイソンでのファイルを見るには
-
100万件越えCSVから条件を満た...
-
一週間用のカレンダー
-
(再質問)エクセルのマクロボ...
-
Ruby require ライブラリー
-
ruby OpenURI::Meta
-
ruby while式
-
ruby loopメソッド 変数(再喝)
-
ruby 配列
-
ruby loopメソッド 変数
-
ruby クラス・オブジェクト・イ...
-
ルビー言語 ライブラリー 追記
-
ruby raise句
-
ruby begin句
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
1、Rstudioで回帰直線を求める...
-
CSSのhtmlへの紐付けについ...
-
(再質問)エクセルのマクロボ...
-
パソコンのスクリーンセーバー...
-
教えてください
-
ビーリアルのユーザー名を変え...
-
ruby while式
-
ruby loopメソッド 変数
-
英数字を含む文字列(0-9,A-Z)...
-
Ruby newメソッド
-
100万件越えCSVから条件を満た...
-
C言語の入力した文字を反転させ...
-
pandasでsqlite3にテーブル作成...
-
ruby loopメソッド 変数(再喝)
-
ルビー言語 ライブラリー 追記
-
ruby raise句
-
Beautiful Soupのインストール...
-
<python>ノイズを時間指定して...
-
Ruby require ライブラリー
-
あせんうぶり言語
おすすめ情報
tatsumaru77様にいくつか質問なのですが、
先ず、質問1 ①「fileはStringIOクラスである。」というのは、どこにそんな記述があるのでしょうか?
質問2 念の為の質問ですが、StringIOクラスは、IOクラスとは、無関係と言う事は、この質問文の件については、IOクラスは無かった事として解釈してもよろしいでしょうか?
質問3「特にStringIOクラスはIOクラスとは関係ないそうです。」は、これも、どこにそんな記述があるのでしょうか?
質問4 「但し、IOクラスのほとんどのメソッドを同じような感覚でStringIOクラスでも使用できるということなのでStringIO#each_lineも使用できます。」についてですが、これも、どこにそんな記述があるのでしょうか?それと、StringIO#each_lineの#は、何でしょうか?
教えていただけると幸いです。
大変失礼ですが、追加の質問をさせていただきます。
質問5 「IOクラスは、openによって返されるインスタンスです。」の、記述はどこに書かれているのでしょうか?
教えていただけると幸いです。
質問3の追加質問
STDOUTとは、一体何なのでしょうか?
質問5の追加質問
IO(Fileを含む)とは、fileは、入出力を行うからでしょうか?
教えていただけると幸いです。
質問5の再追加質問
Fileクラスは、File.openを使って生成し、IOクラスをインクルードしていて、それで、tatsumaru77様の挙げてくれたURL先には「ファイルアクセスのためのクラスです」と書かれているのですが、これは、ファイルの操作(読み書き等)をするのでしょうか?こんな感じの解釈でいいのでしょうか?
教えていただけると幸いです。
質問5の追加説明についてですが、Fileクラスは、File.openを使って生成し、IOクラスをインクルードしていての所は、あるサイトを見て、IOクラスがFileクラスをインクルードしているのではないかと思ったのですが、どうなのでしょうか?
そのサイトは、以下のURLです。
https://zenn.dev/wakkunn/articles/db9d191798760d
どこでそう思ったかというと、「Fileクラスのスーパークラスで、基本的な入出力機能を備えたクラスです。read,write,closeなど多くのメソッドは前述で紹介したFileクラスでも使用できます。」
の所です。私の勘違いでしょうか?
教えていただけると幸いです。
tatsumaru77様へ
追加質問なのですが、StringIOクラスと、IOクラスと、fileクラスの関係性は、IOクラスは、fileクラスの包含関係で、StringIOクラスは、IOクラスのほとんどのメソッドが使えると言っていますが、IOクラスしか使えないもの又は、StringIOクラスでしか使えないものも、あるのでしょうか?
教えていただけると幸いです。
IOクラスがFileクラスをインクルードしているのではないかと思ったの、「インクルードしている」の意味は、「IOクラスは、fileクラスの包含関係ではないか?」という意味です。
教えて頂けると幸いです。
又、意味不明な事があれば教えてくれると助かります。