1

文法修正アプリを作成しています。スラングを入力すると、正式な英語の修正が返されます。サポートされているすべての俗語は、配列内に保持されます。サポートされていないスラングが入力された場合に、このようなメソッドを作成しました。

def addtodic(lingo)
  print"\nCorrection not supported. Please type a synonym to add '#{lingo}' the dictionary: "
  syn = gets.chomp
  if $hello.include?("#{syn}")
    $hello.unshift(lingo)
    puts"\nCorrection: Hello.\n"
  elsif $howru.include?("#{syn}")
    $howru.unshift(lingo)
    puts"\nCorrection: Hello. How are you?\n"   
  end
end

これは機能しますが、アプリケーションが閉じられるまでのみです。ソースコードも修正するように、これを永続化するにはどうすればよいですか? それができない場合、すべてのケースを保持する外部ファイルを作成し、それをソース コードで参照するにはどうすればよいでしょうか?

4

1 に答える 1

3

配列を外部ファイルにロードして保存する必要があります。

Rubyのファイルに配列を保存する方法は? あなたがやろうとしていることに関連しています。

簡単な例

1 行に 1 つのスラング フレーズを含むファイルがあるとします。

% cat hello.txt
hi
hey
yo dawg

次のスクリプトは、ファイルを配列に読み取り、用語を追加してから、配列をファイルに再度書き込みます。

# Read the file ($/ is record separator)
$hello = File.read('hello.txt').split $/

# Add a term
$hello.unshift 'hallo'

# Write file back to original location
open('hello.txt', 'w') { |f| f.puts $hello.join $/ }

ファイルには、追加したばかりの用語を含む余分な行が含まれます。

% cat hello.txt
hallo
hi
hey
yo dawg

これは、配列をファイルに格納する簡単な方法の 1 つにすぎません。他の方法については、この回答の冒頭にあるリンクを確認してください (それほど重要でない例ではうまく機能します)。

于 2012-08-09T20:41:50.773 に答える