Hitsuji_monのブログ~ 村上春樹のあれ ~

文学好きな組み込み系エンジニア

【#100DaysOfCode】Day12 「作りながら学ぶRuby入門」14,15章

まず取り組み方の振り返り

脳死写経にならないように気をつけたい

  • 一読して考える
  • そのコードを写経する必要があるかどうか即断
  • 必要なものだけ写経

これで脳死を防ぎつつ、速度をあげたい



ということで、第1タームの振り返りも終わったし、今日のコード。



Day12

「作りながら学ぶRuby入門」14,15章 ファイルアクセス


ファイルデータを1行ずつ読み込む

# eachメソッドを使って、ファイルデータを1行ずつ読みこむ

# 行番号用の変数
line_no = 0

# "sample4.txt"を読み込みモードでオープンする
file = open("sample4.txt", "r")

# ファイルの行を1行ずつ取り出して、line に読み込む
file.each{ |line|
    line_no += 1
    # 行数とlineを表示する
    print( "#{line_no}: #{line}" )
}
puts ""

#ファイルを閉じる
file.close


openクラスを用いて処理をブロック化する

# Fileクラスのopenメソッドを使うと、処理の部分をブロックとして渡すことができる

# "sample4.txt"を読み込みモードでオープンする
open("sample4.txt", "r") { |file|           # 処理はブロックとして渡す
    #ファイルの行を1行ずつ取り出して、lineに取り込む
    file.each { |line|
        print line
    }

    puts ""
}   # このブロックを抜けると、ファイルは自動的に閉じてもらえる


本日のまとめコード
deleteメソッドを使ってファイルを削除

# deleteメソッドを使って、ファイルを削除する

# 配列データを作成
fruits = ["apple", "banana", "cherry", "fig", "grape"]

# ファイル名を変数に格納する
fname = "sample7.txt"

# "sample7.txt"を書き込みモードで新規作成
## openクラスを使ってかく
open(fname, 'w') { |file|
    fruits.each { |fruit|
        file.puts fruit
    }
}

# "sample7.txt"を読み込みモードでオープンする
open(fname, 'r') { |file|
    #ファイルの行を1行ずつ取り出して、lineに取り込む
    file.each { |line|
        print line
    }
}

# "sample7.txt"を削除する
File.delete(fname)          # .unlinkでも同じ

# "sample7.txt"を読み込みモードでオープンする
## エラーが出るはず
file = open(fname, 'r')


C言語とそっくりだったので、クッソ楽だった