Làm cách nào để show_tied
tắt khi sử dụng DP trong Raku?
Bạn phải chuyển đổi rõ ràng Associative
s (ví dụ: Pair
s) được liệt kê ở cuối use
câu lệnh, không phải là "thẻ", thành một danh sách dẹt xen kẽ các khóa và giá trị. 1
Giải pháp trực tiếp nhất là tự viết một danh sách bằng phẳng các chữ, ví dụ:
use Data::Printer:from<Perl5> 'show_tied', 0;
Để biết giải pháp gọn gàng hơn, hãy xem phần Sử dụngkv
bên dưới.
Tiêm biến
Lưu ý rằng các use
báo cáo được đánh giá tại thời gian biên dịch . Vì vậy, nếu bạn muốn thêm các biến trong danh sách thì bạn cần đảm bảo rằng các giá trị của chúng, không chỉ tên của chúng, cũng được thiết lập tại thời điểm biên dịch , trước khi use
câu lệnh được ước tính. Một người không được trang bị my $foo = 0;
sẽ không đủ vì = 0
phần này sẽ xảy ra vào thời gian chạy . Thay vào đó, bạn sẽ cần sử dụng cấu trúc thời gian biên dịch phù hợp, chẳng hạn như BEGIN
:
BEGIN my $foo = 0;
use Data::Printer:from<Perl5> 'show_tied', $foo;
Sử dụng kv
Các kv
thói quen có thể tạo ra mong muốn 'key1', value1, 'key2', value2, ...
chuỗi cung cấp một băm:
use Data::Printer:from<Perl5> kv { show_tied => 0 }
hoặc là:
BEGIN my %opts = show_tied => 0;
use Data::Printer:from<Perl5> kv %opts;
Chú thích
1 Câu trả lời này được xây dựng dựa trên lời giải thích của Stefan về vấn đề tôi đã mở để đáp lại "Thay đổi tham số trong Dữ liệu :: Máy in trong Raku" SO :
Giải pháp khá đơn giản: sử dụng Data::Printer:from<Perl5> 'show_tied', 0;
Dấu phẩy chất béo =>
là một Pair
công cụ xây dựng trong Raku trong khi nó thực sự chỉ là một dấu phẩy lạ mắt trong Perl 5. Raku xem xét các Pair
đối số được sử dụng để nhập các thẻ như :ALL
(tương đương với ALL => True
). Để giải quyết vấn đề này và vượt qua những gì mã Perl 5 mong đợi, chỉ cần liệt kê các giá trị riêng lẻ.
Nói cách khác, nhu cầu chuyển đổi này là do Perl và Raku chia sẻ khái niệm về thẻ ( Perl doc về "tags" ; Raku doc về "tags" ) và (không phải ngẫu nhiên) sử dụng cùng một cú pháp để chọn thẻ ( :tagname
).
Hơn nữa, khi sử dụng Raku, vấn đề này (cần giải quyết) sự mơ hồ giữa việc liệu cú pháp có được sử dụng để chỉ định thẻ hay không áp dụng cho tất cả các Associative
s được sử dụng ở cấp cao nhất của use
câu lệnh, không chỉ những câu được viết trong biểu mẫu :foo
mà ngay cả những câu được viết dưới các hình thức khác như foo => bar
, { foo => bar}
, %baz
, hoặc { %baz }
.
var
biến khủng khiếp . Nó không giống như gói này thậm chí hoạt động trong Raku. Thật là xấu hổ, ở Perl, nó hoạt động tuyệt vời :, (