Ruby - это «утка типизированная», не имеющая сильной или слабой типизации, что означает, что поведение переменной/объекта не обязательно зависит от класса, к которому он принадлежит, но скорее «слепое» и выполняет вызов метода во время выполнения без type проверка. Если он не может этого сделать, он вызывает ошибку.
Ruby делает неявное преобразование для Integer, String и некоторых других внутренних классов. Выполнение преобразования зависит от левого операнда. Например,
1 + "2"
Левый операнд является целым числом, поэтому рубин пытается выполнить математическую операцию +. Но правый операнд - это строка, поэтому ruby попытается выполнить преобразование (совмещение) из строки в целое. (Хотя это все еще не удалось.Чтобы заставить его работать, нужно переопределить метод + для Integer или мы называем патч обезьяны, чтобы сделать явное преобразование, используя String # to_i)
Забудьте о термине ["строго типизировано"] (http: //stackoverflow.com/a/9929697/395760). Он нечеткий, бессмысленный, бесполезный, возможно даже вредный. – delnan
Я думаю, что у вас есть некоторые понятия, запутанные. * тип конвертация * и * тип литье * не альтернатива. * type casting * - это то, что может произойти в статически типизированном языке, но поскольку Ruby динамически типизирован, это не применяется. – troelskn
@troelskn извинения. Я скорректировал свое описание. Я скорее поставил вместо, чем раньше. –