2013-06-20 7 views
1

Рассмотрим следующий код (небольшой тест-случай вареное вниз от реальной проблемы):Как работать с ошибкой упаковки IronRuby?

abc="ABC" 
b="B" 
print abc.index(b) 
print "\n" 

abc2=abc.unpack('C*').pack('C*') 
b2=b.unpack('C*').pack('C*') 
print abc2.index(b2) 
print "\n" 

В IdeOne он outputs

1 
1 

Запуск с IronRuby (32- или 64-бит) из командная строка выводит

1 
nil 

И, несмотря на это, если я печатать abc==abc2 это дает true.

Это явно ошибка в IronRuby, но это мертвый проект, поэтому нет надежды на то, что он будет исправлен в ближайшем будущем.

Кто-нибудь знает обходное решение, которое позволит мне упаковать ASCII обратно в строки, которые действительно ведут себя так, как можно было бы ожидать?

ответ

1

Я однажды столкнулся с подобной проблемой и должен был добавить +'' для принудительного принуждения строки.

В приведенном выше коде, линия

b2=b.unpack('C*').pack('C*') 

следует заменить

b2=b.unpack('C*').pack('C*') + '' 

, и он будет работать, как ожидалось.