Tôi đang thử nghiệm với mảng và đang đọc cuốn sách "Khởi đầu Ruby on Rails" của Steve Holzner. Tôi đã thực hiện chương trình:Loại mảngError: không thể chuyển đổi Fixnum thành String
array = ['Hello', 'there', 1, 2]
puts array[1]
puts array[3]
puts array.length
array2 = Array.new
puts array2.length
array2[0] = "Banana"
array2[1] = 6
puts array2[0] + " " + array2[1]
puts array3.length
Nó không làm được gì nhiều, nhưng khi tôi chạy nó tôi nhận được lỗi
arrays.rb:9:in `+': can't convert Fixnum into String (TypeError)
from arrays.rb:9
Tại sao tôi nhận được lỗi này?
Đánh bại tôi bằng giây. :) –
Tôi muốn thêm một lỗi ở đây là một tính năng của một ngôn ngữ được đánh máy mạnh, trong đó Ruby là một ví dụ. PHP, một ngôn ngữ được đánh máy yếu, sẽ cho phép sự lừa đảo đó. – bernie
@bernie Đó là kết quả trực tiếp hơn của các quy tắc cưỡng chế kiểu Ruby, không phải là cách đánh máy mạnh mẽ. Ví dụ, Float + Fixnum trong Ruby là hợp pháp vì Ruby biết cách ép buộc một kiểu này sang kiểu khác. Bạn thực sự có thể mở lại Fixnum và thêm một phương thức 'coerce' để làm cho String + Fixnum trở thành hợp pháp. –