codecamp

hack元组与数组的关系

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)
}
hack元组介绍
hack元组示例
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }