- 实现std::map和std::unordered_map的foreach循环功能 - 实现std::array和std::vector的foreach循环功能 - 添加在foreach循环中删除容器元素的保护机制 - 添加标准容器类型的变量检查和类型验证 - 更新标准容器声明语法以支持键值类型参数 - 添加标准容器键值类型推断功能pull/1/head
parent
958a1aa2cb
commit
ea462010d1
6 changed files with 200 additions and 14 deletions
@ -0,0 +1,15 @@ |
||||
--TEST-- |
||||
std array: foreach |
||||
--FILE-- |
||||
<?php |
||||
function main() { |
||||
$a = std::array(native_types::type_int, 5); |
||||
foreach($a as $k => $item) { |
||||
$a[$k] = random_int(1, 1000); |
||||
} |
||||
$count = array_sum($a); |
||||
var_dump($count >= 5); |
||||
} |
||||
?> |
||||
--EXPECT-- |
||||
bool(true) |
||||
@ -0,0 +1,32 @@ |
||||
--TEST-- |
||||
std map: unset |
||||
--FILE-- |
||||
<?php |
||||
function main() { |
||||
$map = std::map(complex_types::type_string, native_types::type_int); |
||||
$map["alpha"] = 10; |
||||
$map["beta"] = 20; |
||||
$map["gamma"] = 30; |
||||
|
||||
foreach ($map as $k => $v) { |
||||
var_dump($k, $v); |
||||
} |
||||
unset($map["beta"]); |
||||
echo "unset-------------\n"; |
||||
foreach ($map as $k => $v) { |
||||
var_dump($k, $v); |
||||
} |
||||
} |
||||
?> |
||||
--EXPECT-- |
||||
string(5) "alpha" |
||||
int(10) |
||||
string(4) "beta" |
||||
int(20) |
||||
string(5) "gamma" |
||||
int(30) |
||||
unset------------- |
||||
string(5) "alpha" |
||||
int(10) |
||||
string(5) "gamma" |
||||
int(30) |
||||
@ -0,0 +1,32 @@ |
||||
--TEST-- |
||||
std map: unset |
||||
--FILE-- |
||||
<?php |
||||
function main() { |
||||
$map = std::unordered_map(complex_types::type_string, native_types::type_int); |
||||
$map["alpha"] = 10; |
||||
$map["beta"] = 20; |
||||
$map["gamma"] = 30; |
||||
|
||||
foreach ($map as $k => $v) { |
||||
var_dump($k, $v); |
||||
} |
||||
unset($map["beta"]); |
||||
echo "unset-------------\n"; |
||||
foreach ($map as $k => $v) { |
||||
var_dump($k, $v); |
||||
} |
||||
} |
||||
?> |
||||
--EXPECT-- |
||||
string(5) "gamma" |
||||
int(30) |
||||
string(4) "beta" |
||||
int(20) |
||||
string(5) "alpha" |
||||
int(10) |
||||
unset------------- |
||||
string(5) "gamma" |
||||
int(30) |
||||
string(5) "alpha" |
||||
int(10) |
||||
@ -0,0 +1,23 @@ |
||||
--TEST-- |
||||
std vector: foreach |
||||
--FILE-- |
||||
<?php |
||||
use native_types; |
||||
function main() { |
||||
$a = std::vector(native_types::type_int); |
||||
$n = 5; |
||||
while($n--){ |
||||
$a[] = random_int(1, 1000); |
||||
} |
||||
$count = array_sum($a); |
||||
var_dump($count >= 5); |
||||
$total = 0; |
||||
foreach($a as $v){ |
||||
$total += $v; |
||||
} |
||||
var_dump($total == $count); |
||||
} |
||||
?> |
||||
--EXPECT-- |
||||
bool(true) |
||||
bool(true) |
||||
Loading…
Reference in new issue