私は小さな初心者プロジェクトに取り組んでいます。プロジェクトは 2 つのスクリプトで構成されます。スクリプト番号 1 は、ユーザーからパラメーターを受け取るコマンド ライン インターフェイスです。スクリプト番号 2 はデカルト積を作成し、テキスト ファイルに書き込みます。私の考えは、すべてを 1 つのファイルに入れることなく、すべてを機能させることです)。「ロード」を使用しようとすると、次のエラーが表示されます:"
Carthese_product.rb:3:in `<top (required)>': undefined local variable or method
`x_min' for main:Object (NameError)
from D:/Cli_file.rb:25:in `load'
from D:/Cli_file.rb:25:in `<main>'
Script1 (Cli_file.rb):
require 'trollop'
opts = Trollop::options do
banner <<-EOS
Welcome to points generator!
Usage:
test [options] <filenames>+
where [options] are:
EOS
opt :x_min, "Minimal value of X", :type => :int
opt :x_max, "Maximal value of X", :type => :int
opt :y_min, "Minimalna wartosc Y", :type => :int
opt :y_max, "Maksymalna wartosc Y", :type => :int
opt :interval, "Interval between points", :type => :int, :default => 1
opt :products_file, "Name of products_file", :type => :string, :default =>
"Products"
end
a= opts
x_min = a[:x_min]
x_max = a[:x_max]
y_min = a[:y_min]
y_max = a[:y_max]
interval = a[:interval]
products_file = a[:products_file]
load 'Carthese_product.rb'
Script2 (Carthese_product.rb)
products = []
(x_min/interval..x_max/interval).each do |x|
(y_min/interval..y_max/interval).each do|y|
products << [x*interval,y*interval]
end
end
a = products.map.with_index{|w, i| "#{i+1} #{w[0].to_s} #{w[1].to_s} \n"}
aFile = File.new( products_file, "w+")
if aFile
a.each{|x| aFile.write(x)}
else
puts "Something wrong!"
end
すべてを 1 つのスクリプトにまとめることが最も簡単な解決策であることはわかっていますが、教育目的で別の方法を見つけたいと考えています。助けてくれてありがとう!