hack元组与数组的关系

2018-11-07 15:22 更新

HHVM的封面下,元组实际上只是受限制的数组。

原理

你不能改变元组的元素数量,你可以改变一个元组的值,当且仅当新值是的相同类型的当前值。

如果试图将值更改为不同类型的值,则Hack类型检查器将引发错误(但是,由于元组只是数组中的数组,因此HHVM将顺畅地运行)。

<?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

您可以使用数组方括号语法从元组中读取数据。然而,从元组中读取最常见的方法是使用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)
}
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号