hack元組與數(shù)組的關(guān)系

2018-11-07 15:22 更新

HHVM的封面下,元組實(shí)際上只是受限制的數(shù)組。

原理

你不能改變?cè)M的元素?cái)?shù)量,你可以改變一個(gè)元組的值,當(dāng)且僅當(dāng)新值是的相同類型的當(dāng)前值。

如果試圖將值更改為不同類型的值,則Hack類型檢查器將引發(fā)錯(cuò)誤(但是,由于元組只是數(shù)組中的數(shù)組,因此HHVM將順暢地運(yùn)行)。

<?hh

namespace Hack\UserDocumentation\Tuples\RelationshipToArrays\Examples\ChgValue;

function run(): void {
  $t = tuple (3, "str", array(1, 2));
  var_dump($t);
  $t[0] = 4;
  $t[1] = "hi";
  $t[2] = array("hello", 1000);
  $t[1] = 100; // type error since [1] is originally a string
  var_dump($t);
}

run();

Output

array(3) {
  [0]=>
  int(3)
  [1]=>
  string(3) "str"
  [2]=>
  array(2) {
    [0]=>
    int(1)
    [1]=>
    int(2)
  }
}
array(3) {
  [0]=>
  int(4)
  [1]=>
  int(100)
  [2]=>
  array(2) {
    [0]=>
    string(5) "hello"
    [1]=>
    int(1000)
  }
}

Reading

您可以使用數(shù)組方括號(hào)語(yǔ)法從元組中讀取數(shù)據(jù)。然而,從元組中讀取最常見的方法是使用list() 分配。

<?hh

namespace Hack\UserDocumentation\Tuples\RelationshipToArrays\Examples\ChgValue;

function run(): void {
  $t = tuple (3, "str", array(1, 2));
  var_dump($t[1]); // literal syntax
  list($i, $s, $arr) = $t; // list assignment
  var_dump($i);
  var_dump($s);
  var_dump($arr);
}

run();

Output

string(3) "str"
int(3)
string(3) "str"
array(2) {
  [0]=>
  int(1)
  [1]=>
  int(2)
}
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)