我正在编写一个脚本来获取值,解析它们并将它们保存到mongodb。这是我的代码:
def extractFunctionFromFieldName(s: String): User => Any = { u: User =>
val f = classOf[User].getDeclaredField(s)
f.setAccessible(true)
f.get(u)
}
当我从mongodb结果中到达拆分字符串的第7和第9个数组值时,出现错误。这是错误:
collection.find({}, :projection => {"_id" => 0, "SMSMSG" => 1, "SMSFR" => 1}).each{
|row|
dataw = row["SMSMSG"]
pars = dataw.split(';')
trans = pars[1]
loc = pars[3]
pltn = pars[5]
timin = pars[6]
timout = pars[7] #the error occurs here
transam = pars[8]
totalh = pars[9] #to here
puts timout[0,2] #this is error but when
puts timin[0,2] #there is no error and it displays the result perfectly
}
答案 0 :(得分:2)
如果你读错误undefined method '[]' for nil:NilClass
很容易理解:你试图在一些零的对象上使用括号运算符。您可能认为该对象是一个字符串,但它实际上是零。您应该找出错误引用的对象,然后添加代码来处理该对象为nil的情况(或修复导致它为nil的根问题)。一种选择是检测它是否为零然后将其转换为空字符串。这是你可以写的一种方式:
(some_object || '')[0, 2]
答案 1 :(得分:1)
除了David Grayson提供的解决方案之外,还可以在您希望成为字符串的对象上使用to_s方法。如果它已经是一个字符串,它将只返回self。 nil将返回一个空字符串。
"a string".to_s #=> "a string"
nil.to_s #=> ""