Znaki matematyczne

Stworzyłem sobie ostatnio, bawiąc się MathML, prosty mechanizm captcha. Użytkownik musi wpisać wynik działania “ułamek działanie ułamek”. Wpadłem sobie na pomysł, żeby działanie losować i pierwszą myślą było stworzenie tablicy ["*","/", “+”,"-"] i robienie na niej rand(). Niestety nie wiem czy da się skonwertować stringa na rzeczywisty znak działania. Ja tego nie znalazłem :frowning: Póki co obszedłem to instrukcją if-else, ale nie wydaje mi się to najszczęśliwszym rozwiązaniem (tzn. pierwotny pomysł == mniej kodu). Może coś podpowiecie w tej kwestii?

Pozdrawiam :smile:

Ruby jest językiem obiektowym również w przypadku działań matematycznych, a skoro liczby są obiektami, to… działania są metodami.

2.send(:+, 3)
=> 5

5.send(:*, 2)
=> 10

3.send(:/, 0)
ZeroDivisionError: divided by 0

1.send("-", 1)
=> 0
1 Like

http://ruby-doc.org/core-2.0.0/Array.html#method-i-sample

Wiedziałem, że w Ruby, to nie może być skomplikowane :wink: Dzięki, tego właśnie szukałem :smile:

[quote=“Ravicious, post:3, topic:6325”]http://ruby-doc.org/core-2.0.0/Array.html#method-i-sample
[/quote]
Tego też nie znałem, dzięki :smile:

Generalnie polecam przejrzeć sobie całą dokumentację dla Array i Enumerable, bardzo przydatne rzeczy.