我使用CurATE()来插入已经存在的表,但是一些表字段和变量名以一个数字开头。目前在Ruby中,当我尝试执行如下操作时,出现语法错误“unexpected tIDENTIFIER”-foo.each do |x| Object.create( 3pm: x.3pm, 3pa: x.3pa )end如果将其更改为'3pm' => x.3pm,则会在x.3pm部分出现语法错误。我怎么能逃过这一关让它正常工作呢? 最佳答案 问题是3pm在Ruby中不是valid identifier在Ruby中,用:name语法和方法名声明的符号文本必须都是有效的标识符。对于键,您可以通过使用字符串(如您所发现的那样)或使用符号文本的:'name'语法来解决此问题:foo.each do |x| Object.create( :'3pm' => x.3pm, :'3pa' => x.3pa )end不幸的是,这仍然留下了3pm和3pa不是有效方法名的问题。通常,因为这些不是有效的方法名,所以它们根本就不可能是x上的方法但是,在这种情况下, >很可能使用Ruby的 >或“>”> > >特性来创建或模拟一个名为的方法的存在(即使Ruby中通常不是有效的方法名称)。谢天谢地,我们可以使用x调用方法来解决这个问题:foo.each do |x| Object.create( :'3pm' => x.public_send(:'3pm'), :'3pa' => x.public_send(:'3pa') )end这应该能解决你的问题。
08-15 23:27