Tôi cần phải xác định xem một băm Perl có một khóa nhất định hay không, nhưng khóa đó sẽ được ánh xạ tới một giá trị không xác định. Cụ thể, động lực cho điều này là nhìn thấy nếu cờ boolean trong khi sử dụng getopt()
với một tham chiếu băm được truyền vào nó. Tôi đã tìm kiếm cả trang web này và google và exists()
và defined()
dường như không áp dụng được cho tình huống, họ chỉ thấy giá trị của một khóa nhất định không được xác định, họ không kiểm tra xem băm có thực sự có Chìa khóa. Nếu tôi là một RTFM ở đây, xin vui lòng chỉ cho tôi hướng dẫn giải thích điều này.Làm cách nào để xác định xem một băm Perl có chứa ánh xạ khóa tới giá trị không xác định?
Trả lời
tồn tại() và xác định() dường như không được áp dụng cho tình hình, họ chỉ nhìn thấy nếu giá trị cho một chìa khóa nhất định là không xác định, họ không kiểm tra xem mã băm có thực sự có khóa hay không
không chính xác. Đó thực sự là những gì defined()
có, nhưng exists()
thực hiện chính xác những gì bạn muốn:
my %hash = (
key1 => 'value',
key2 => undef,
);
foreach my $key (qw(key1 key2 key3))
{
print "\$hash{$key} exists: " . (exists $hash{$key} ? "yes" : "no") . "\n";
print "\$hash{$key} is defined: " . (defined $hash{$key} ? "yes" : "no") . "\n";
}
sản xuất:
$hash{key1} exists: yes $hash{key1} is defined: yes $hash{key2} exists: yes $hash{key2} is defined: no $hash{key3} exists: no $hash{key3} is defined: no
Các tài liệu cho hai chức năng này có sẵn tại dòng lệnh tại perldoc -f defined
và perldoc -f exists
(hoặc đọc tài liệu cho tất cả các phương pháp tại perldoc perlfunc
*). Các tài liệu web chính thức là ở đây:
* Vì bạn đặc biệt đề cập RTFM và bạn có thể không nhận thức được vị trí của các tài liệu Perl, hãy để tôi cũng chỉ ra bạn có thể lấy chỉ mục đầy đủ của tất cả các perldocs tại perldoc perl
hoặc tại http://perldoc.perl.org.
Nếu tôi đọc chính xác câu hỏi của bạn, tôi nghĩ bạn đang nhầm lẫn về exists. Từ các tài liệu:
tồn tại EXPR
Với một biểu thức mà xác định một yếu tố băm hoặc phần tử mảng, trả đúng nếu các yếu tố quy định tại các băm hoặc mảng đã từng khởi tạo, ngay cả khi giá trị tương ứng không xác định.
Ví dụ:
use strict;
use warnings;
my %h = (
foo => 1,
bar => undef,
);
for my $k (qw(foo bar baz)){
print $k, "\n" if exists $h{$k} and not defined $h{$k};
}
Câu trả lời ngắn:
if (exists $hash{$key} and not defined $hash{$key}) {
...
}
- 1. Cách xác định xem danh sách 2 chiều có chứa giá trị không?
- 2. Làm cách nào để ánh xạ (và sắp xếp) các giá trị từ băm băm?
- 3. Có cấu trúc Dữ liệu C# để ánh xạ khóa tới nhiều giá trị không?
- 4. Cách xác định ánh xạ trong elasticsearch không chấp nhận các trường khác mà các ánh xạ được ánh xạ?
- 5. Cơ sở hạ tầng Java để ánh xạ nhiều khóa tới cùng một giá trị
- 6. Làm cách nào để xác định xem giá trị Enum có một hoặc nhiều giá trị được so sánh với?
- 7. Làm thế nào để xác định xem một mảng kết hợp có một khóa không?
- 8. Perl, nhận tất cả giá trị băm
- 9. Làm cách nào để xác định xem một khóa cụ thể có phải là duy nhất trong multimap không?
- 10. Cách tìm khóa băm có chứa giá trị phù hợp
- 11. Làm thế nào để xác định xem một khóa là một chữ cái hoặc số?
- 12. Làm cách nào tôi có thể xem liệu một băm Perl đã có một khóa nhất định?
- 13. C++ boost unordered_map - xác định xem khóa có tồn tại trong vùng chứa
- 14. Perl: Xác định hàm băm có tham chiếu đến cùng một băm, $ this -> {key}?
- 15. Moq cách xác định một phương pháp được gọi với một danh sách có chứa giá trị nhất định
- 16. Xác định địa phương Nhạy cảm băm - tìm xác suất và giá trị cho R
- 17. Làm cách nào để bạn có thể nhận được Perl dừng khi tham chiếu giá trị không xác định?
- 18. Làm cách nào để tạo một khóa ánh xạ trở lại hành vi mặc định
- 19. Có một khóa băm chưa được khởi tạo có giá trị mặc định bằng 0 trong Perl không?
- 20. Loại giá trị không xác định JSON
- 21. Bạn có nên xác định giá trị null/không xác định cho các enums Java không?
- 22. được cung cấp/khi có giá trị không xác định
- 23. Xác định ánh sáng Tọa
- 24. Hàm băm Perl khi cả khóa và giá trị là tham chiếu mảng
- 25. Làm thế nào để xác định thứ tự ánh xạ bộ lọc trên GlassFish?
- 26. Xác định xem một chuỗi các chuỗi có chứa một chuỗi con nhất định trong ruby
- 27. Trong Clojure, tôi làm cách nào để ánh xạ mọi thứ tới một giá trị không đổi?
- 28. Có một nội trang Python để xác định xem một iterable có chứa một chuỗi nhất định không?
- 29. Trong Perl, làm cách nào để tạo một băm có khóa đến từ một mảng nhất định?
- 30. Có cách nào để lấy thông tin về ánh xạ mùa xuân được xác định bởi @Controller không?