簡體   English   中英

“{}”(大括號)如何創建哈希,為什么我可以將其存儲為標量?

[英]How do “{}” (braces) create a hash, and why can I store it as a scalar?

perltoot中是這個代碼:

$rec = {
  name  => "Jason",
  age   => 23,
  peers => [ "Norbert", "Rhys", "Phineas"],
};

這是一個字符串還是某種哈希(我認為哈希是用%聲明的)?

它是哈希的引用 (一種指針)。 一個引用(就像在Perl中以'$'開頭的任何東西)是一個標量,在這種情況下是一個“指向”非標量值的標量。

  @ta = (10,20,30); # array
  $tb = [10,20,30]; # reference to an array
  %tc = (name => 'John', age => 23); # hash
  $td = {name => 'John', age => 23}; # reference to a hash

  print( $ta[1] . "\n");
  print( $tb->[1] . "\n");

  print( $tc{'name'} . "\n");
  print( $td->{'name'} . "\n");

理解引用對於除了偶然的Perl編程至關重要。 例如,您需要使用引用來創建嵌套結構(數組數組等)。

{ }創建哈希和對它的引用,並返回后者。

{ a => 1, b => 2 }

大致相當於

do { my %anon = ( a => 1, b => 2 ); \%anon }

perlref中記錄了此運算符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM