2015-08-26 3 views
1

Есть ли функция, равная php array_fill_keys в visualbasic?array_fill_keys в Visual Basic

В PHP я сделать:

<?php 
$array1 = array( 
    "a" => "first", 
    "b" => "second", 
    "c" => "something", 
    "red" 
); 

$array2 = array( 
    "a" => "first", 
    "b" => "something", 
    "letsc" 
); 

print_r(array_fill_keys($array1, $array2)); 
?> 

Как это сделать в VB?

+1

Нет, потому что Visual Basic массивы не являются ассоциативные HashMaps как они находятся в PHP. Может быть, вы хотите использовать словарь? – SBI

+0

Может быть. Проблема в том, как хранить словарные значения в текстовом файле? –

+0

Сериализовать объекты. Однако это звучит немного как запах дизайна. Не могли бы вы добавить дополнительную информацию о том, чего вы пытаетесь достичь? – SBI

ответ

1

Только в случае, если вам действительно нужен array_fill_keys -alike функцию и может жить со словарем:

Option Explicit 

' stolen from http://php.net/manual/en/function.array-fill-keys.php: 
' Fill a dictionary with values (xValue), specifying keys (aKeys) 
' Fills a dictionary with the value of the xValue parameter, using the values of aKeys as keys. 
Function array_fill_keys(aKeys, xValue) 
    Dim t : Set t = CreateObject("Scripting.Dictionary") 
    Dim k 
    For Each k In aKeys 
     t(k) = xValue 
    Next 
    Set array_fill_keys = t 
End Function 

Sub FEDicO(d, o) 
    Dim k 
    For Each k In d.Keys 
     o.apply d, k 
    Next 
End Sub 

Class cPPrintLn 
    Sub apply(d, k) 
    WScript.Echo " ", k, "=>", d(k) 
    End Sub 
End Class 

' $keys = array('foo', 5, 10, 'bar'); 
' $a = array_fill_keys($keys, 'banana'); 
' print_r($a); 
' The above example will output: 
' Array(
' [foo] => banana 
' [5] => banana 
' [10] => banana 
' [bar] => banana 
') 

Dim aKeys : aKeys = Array("foo", 5, 10, "bar") 
Dim dicX : Set dicX = array_fill_keys(aKeys, "Banana") 
WScript.Echo "dicX:" 
FEDicO dicX, New cPPrintLn 

выход:

cscript 32219456.vbs 
dicX: 
    foo => Banana 
    5 => Banana 
    10 => Banana 
    bar => Banana