Có người hỏi về nhà điều hành splat ngày hôm qua, và tôi muốn xem mã nguồn ... sẽ được viết bằng C hay trong Ruby? Nó sẽ được tìm thấy ở đâu?Ruby, Mã nguồn của Splat?
Trả lời
Toán tử kết nối không được ghi lại trong tài liệu chính của Ruby như của Ruby 2.4. Tuy nhiên, đó là tính năng cốt lõi của ngôn ngữ và mã nguồn cho toán tử liên kết có thể được tìm thấy trong vm_eval.c
dưới rb_yield_splat(VALUE values)
.
Các unit test cho rb_yield_splat
làm cho nó rõ ràng hơn những gì đang xảy ra:
it "yields with passed array's contents" do
ret = nil
@s.rb_yield_splat([1, 2]) { |x, y| ret = x + y }
ret.should == 3
end
Một số tìm kiếm nhanh trên Google được bật lên mà nó được triển khai trong eval.c. Bạn có thể tìm thấy các tham chiếu đến "splat" ở một vài nơi trong tệp, nhưng tôi không đủ quen thuộc với các hoạt động bên trong của Ruby để tạo ra bất kỳ ý nghĩa nào về nó.
Cảm ơn vì điều đó, Martin. Chỉ cố gắng làm cho ý nghĩa của thế giới Ruby. Vì vậy, về cơ bản, nếu nó là ruby và không phải là đường ray, thì nguồn này có lẽ không có trong Ruby, điều này có ý nghĩa. –
Toán tử splat là một phần của ngôn ngữ chính của ruby, không phải là tính năng thư viện. Nó có thể được sử dụng trên bất kỳ đối tượng nào định nghĩa phương thứC#to_ary, nhưng khi được sử dụng để thu thập nhiều giá trị vào một biến duy nhất (như trong 'a, * b = 1,2,3,4,5'), nó sẽ luôn tạo Mảng. – rampion
@Rampion, cảm ơn vì điều đó. Vì vậy, tôi đoán câu hỏi thực sự của tôi sẽ là: có bất kỳ "tính năng thư viện" (mà mã nguồn là trong Ruby) mà không cần một "yêu cầu?" –
- 1. mã nguồn mở của Ruby Dự án
- 2. In mã nguồn của khối Ruby
- 3. Mã nguồn Ruby Auto-Formatter
- 4. splat ruby Hiểu trong phạm vi và mảng
- 5. Xem mã nguồn của đá quý
- 6. Một splat/dấu hoa thị trong danh sách đối số Ruby có nghĩa là gì?
- 7. Lấy mã nguồn của iframe
- 8. Mã nguồn PDO của PHP
- 9. Làm thế nào để Autoindent mã nguồn Ruby trong Vim
- 10. Mã nguồn mở Twitter clone (bằng Ruby/Python)
- 11. cuộn/lập luận splat chung lisp
- 12. của Ruby Mã giải thích
- 13. Mã nguồn của Google Play Services
- 14. Lớp .NET và mã nguồn của chúng
- 15. Mã nguồn của Thư viện PThread?
- 16. Mã nguồn của nhắn tin cho android
- 17. Lấy mã nguồn của trang bằng UIWebView
- 18. Tải xuống mã nguồn của Eclipse
- 19. mã nguồn của các hàm c/C++
- 20. Nhà điều hành double * (splat) làm gì
- 21. Rake nhiệm vụ w/lập luận splat
- 22. Nguồn đá quý ruby tốt?
- 23. Biên tập mã Ruby
- 24. Có nguồn mở mã nguồn mở không?
- 25. của Ruby CSV UTF8 lỗi mã hóa trong khi đọc
- 26. Latex + Mã Nguồn nhập
- 27. Mã nguồn API Java
- 28. Hiểu mã nguồn jquery
- 29. về mã nguồn jsp
- 30. nhiều kho mã nguồn
tuyệt vời, nhưng làm sao bạn biết nguồn gốc ở đâu? –
Tôi [đã tìm kiếm] (https://github.com/ruby/ruby/search?l=C&q=splat&type=&utf8=%E2%9C%93) trong kho lưu trữ Ruby git. Giới hạn tìm kiếm trong các tệp C, sau đó đọc mã nguồn cho đến khi bạn tìm thấy nó. – anothermh
Thật tuyệt vời. Cảm ơn bạn. –