我正在研究一个模块,该模块读取一个二维数组,匹配第一个项目,然后返回数组。我试图同时使用detect和find,但两者都返回相同的语法错误:
syntax error, unexpected == (SyntaxError)
on
result = @list.find {|item| item|0| == name}
使用列表或检测。我的代码如下:
require 'csv'
class Nutrition
include Enumerable
@list = CSV.read("./lib/list.csv")
def self.search(name)
result = @list.find {|item| item|0| == name}
if result.nil?
result = "error"
end
result
end
end
我在运行rake测试时只收到错误消息。这是我的rake文件
require './lib/nutrition.rb'
require "test/unit"
require 'csv'
class TestNutrition < Test::Unit::TestCase
include Enumerable
def test_carbs()
assert_equal(Nutrition.search('onion'), "13.75")
assert_equal(Nutrition.search('ham'),'0')
assert_equal(Nutrition.search('sawdust'), 'error')
end
end
当我在代码中调用模块时,一切似乎都有效。
答案 0 :(得分:1)
更改以下行:
result = @list.find {|item| item[0] == name}
注意方括号以访问数组索引0。
答案 1 :(得分:0)
使用[ ]
访问数组元素。不是| |
。
在这一行:
result = @list.find {|item| item|0| == name}
使用曲线括号[]
,如下所示:
result = @list.find {|item| item[0] == name}
您的代码必须如下所示:
def self.search(name)
result = @list.find {|item| item[0] == name}
if result.nil?
result = "error"
end
result
end