以我的腳本(紅寶石> = 1.9)下面我所定義的表的類,它責任是產生2至10個加法或乘法表(與所選擇的參數)。然後我從一個新的Table實例調用table方法以便將結果打印到一個文件中。存儲由switch語句有一個陣列中的λ,然後用它
這是腳本:
#!/usr/bin/env ruby
class Table
HEADER_LINE = "="*25
add_operation = lambda { |op1, op2| op1 + op2 }
mul_operation = lambda { |op1, op2| op1 * op2 }
def table(req_operation = :mul)
operation, op_label = case req_operation
when :add
[add_operation, "+"]
when :mul
[mul_operation, "*"]
else
raise "Unknown operation #{req_operation} !"
end
(2..10).each do |op1|
yield HEADER_LINE
yield "Table de #{op1} (x#{op_label}y)"
yield HEADER_LINE
(1..10).each do |op2|
yield line = "#{op1} #{op_label} #{op2} = #{operation.call(op1, op2)}"
end
yield HEADER_LINE
yield
end
end
end
File.open("MyFile", "w") do |file|
Table.new.table do |line|
file.write "#{line}\n"
end
end
第11名試圖並行assignement設置lambda來操作和字符串op_label。的確,在第26行中,我想將lambda應用於op1和op2局部變量。
,但我得到了以下錯誤:
./operation_table.rb:15:in `table': undefined local variable or method `mul_operation' for #<Table:0x00000000f1fc48> (NameError)
from ./operation_table.rb:38:in `block in <main>'
from ./operation_table.rb:37:in `open'
from ./operation_table.rb:37:in `<main>'
是否有辦法來糾正它,同時保持平行assignement? 在此先感謝。
謝謝你的答案:如果我想將兩個lambda作爲類變量存儲,我可以調整哪些代碼? (對不起,這個初學者問題) – loloof64
哦,我的天!當然是@@。我已經忘記了。 – loloof64
或類常量:'AddOperation = ...' – tokland