Ruby自编辑源代码

时间:2012-08-09 20:25:11

标签: ruby

我正在创建一个语法修正器应用程序。您输入俚语并返回正式的英语更正。支持的所有俚语都保留在数组中。我创建了一个类似于这样的方法,用于输入不支持的俚语。

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

这有效,但只有在应用程序关闭之前。如何才能使其持久化,以便修改源代码呢?如果我不能,我将如何创建一个包含所有案例并在我的源代码中引用它的外部文件?

1 个答案:

答案 0 :(得分:3)

您需要在外部文件中加载和存储数组。

How to store arrays in a file in ruby?与您要做的事情相关。

简短的例子

假设您的文件每行有一个俚语

% 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

这只是将数组存储到文件的一种简单方法。检查本答案开头的链接是否有其他方法(对于不太重要的例子,这将更好地工作)。