Câu hỏi này là về định dạng chuỗi của ruby.Phiên bản Ruby của phương thức String
Trong Python, các cấu trúc dữ liệu tích hợp có phương thức chuỗi được tích hợp sẵn và do đó khi biến được in, chuỗi được định dạng thuận tiện để phản ánh cấu trúc dữ liệu được sử dụng. Ví dụ:
>>>$ python
Python 2.6.4 (r264:75706, Dec 7 2009, 18:45:15)
[GCC 4.4.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
$>>> a = [1,2,3,4]
$>>> str(a)
'[1, 2, 3, 4]'
$>>> print a
[1, 2, 3, 4]
$>>> d = { "a":"a", "b":"b", 1:5 }
$>>> str(d)
"{'a': 'a', 1: 5, 'b': 'b'}"
$>>> print d
{'a': 'a', 1: 5, 'b': 'b'}
$>>> x = [1, 23, 4]
$>>> print x
[1, 23, 4]
thông báo rằng khi tôi in một, giá trị là [1, 2, 3, 4]
Tuy nhiên, trong ruby, khi tôi cố gắng làm những điều tương tự, tôi nhận được kết quả này:
>>>$ irb
irb(main):001:0> x = [1,23,4]
=> [1, 23, 4]
irb(main):002:0> x.to_s
=> "1234"
irb(main):003:0> puts x
1
23
4
=> nil
irb(main):004:0> print x
1234=> nil
irb(main):005:0> h = { "a" => "a", 1 => 5, 'b'=>'b' }
=> {"a"=>"a", "b"=>"b", 1=>5}
irb(main):006:0> print h
aabb15=> nil
irb(main):007:0> h.to_s
=> "aabb15"
irb(main):008:0> puts h
aabb15
=> nil
irb(main):009:0>
Như bạn thấy, không có định dạng nào với phương thức to_s. Hơn nữa, có một vấn đề duy nhất nếu tôi gọi to_s trên [1,2,3,4] và [1,23,4] và [1234] vì to_s gộp tất cả các phần tử lại với nhau để tất cả chúng kết thúc là "1234". Tôi biết rằng tôi có thể cố gắng mô phỏng các phương thức chuỗi được xây dựng sẵn của python cho mọi cấu trúc dữ liệu gốc bằng cách ghi đè phương thức to_s ("[" + a.join (",") + "]" #just cho mảng), nhưng tôi đã tự hỏi nếu có một lựa chọn tốt hơn kể từ khi hack nó dường như phá vỡ khái niệm quy ước trên cấu hình.
Vì vậy, có tương đương với ruby của phương thức chuỗi được tích hợp sẵn của python?
gotcha, gần hơn với những gì tôi muốn. cảm ơn. Tôi đã đọc qua API Array nhưng không thể tìm thấy vẫn còn tồn tại cho điều này: ------------------------------ ---------------- irb (chính): 002: 0> [1,2,3,4, 'a', "b"] .inspect => "[ 1, 2, 3, 4, \ "a \", \ "b \"] " --------------------------- ------------------------- thật tuyệt khi không nhìn thấy dấu gạch chéo ngược. điều này có thể không? – dzt
in [1,2,3,4, 'a', "b"]. Kiểm tra => [1,2,3,4, 'a', "b"] – Dogbert
cảm ơn Adam. Nhưng chỉ vì tò mò, bạn sẽ giữ lại giá trị của chuỗi được định dạng độc đáo như thế nào? khi bạn gọi là in, giá trị trả về là số không, không phải là chuỗi được định dạng. – dzt