Jestem w sytuacji, w której potrzebuję wartości ASCII dla znaku (dla Project Euler question #22, jeśli chcesz uzyskać konkretne) i jestem uruchomiony do problemu.Uzyskiwanie kodu znaków ASCII w Rubim przy użyciu znaku `?` (Znak zapytania) kończy się niepowodzeniem
Będąc nowicjuszem w Ruby, szukałem go w Google i stwierdziłem, że ?
było drogą: ?A
lub coś innego. Ale kiedy włączam go do mojego kodu, wynikiem tego polecenia jest ciąg znaków "A"
-nie kod znaku. Ten sam problem z [0]
i slice(0)
, które powinny teoretycznie zwrócić kod ASCII.
Jedyne, co mogę myśleć, to to, że jest to wersja z rubinem. Używam wersji 1.9.1-p0, która została uaktualniona z wersji 1.8.6 dziś po południu. Oszukałem trochę od działającej wersji Ruby, w tym samym katalogu, doszedłem do wniosku, że prawdopodobnie już miałem pliki, które nie są dołączone do pliku .zip, więc nie pobrałem ich.
Dlaczego więc wszystkie moje kody ASCII są zamieniane na rzeczywiste znaki?
Tylko do ukończenia, wersja 1.9.3 lub nowsza nie potrzebuje "?" podpisać przed literą, możemy uzyskać wartość całkowitą tylko z: a.ord – yat0
@polska: Myślę, że mogłeś źle zrozumieć. ? oznacza, że chcemy, aby znak "a", więc pisanie '? a.ord' daje 97, podczas gdy po prostu pisanie' a.ord' szuka zmiennej lub metody o nazwie 'a' i będzie wywoływać NameError, jeśli nic nie ma z tą nazwą lub NoMethodError, jeśli zmienna "a" nie zawiera ciągu. – Chuck
tak, masz rację ... źle mnie zrozumiałem. Działa z? A.ord lub "a" .ord – yat0