2016-11-07 77 views
0

我有一個字符串變量列表,我想將所有這些賦值給一個數組,但列表要多少,有沒有可能讓我用for循環來賦值。使用for循環將字符串變量賦值給數組使用for循環

var class_1 = "some description.."; 
var class_2 = "some description.."; 
var class_3 = "some description.."; 
var class_4 = "some description.."; 
var class_5 = "some description.."; 
. 
. 
var class_100 = "some description.."; 

var classes = []; 

for(var i = 0; i < 100; i++){ 

//loop string variables to array  

} 

我認爲我不可能將100個變量手動分配給數組。任何人知道任何技術?謝謝。

[更新]它需要在SystemVerilog語法中,因爲我不熟悉該語言,所以我用Javascript提出了這個想法。

+1

你有_100個變量_?你應該首先排序... –

+1

使用數組.so而不是'class_1'你可以使用'class_ [1]' –

+0

@Fast Snail這些變量是預先定義的變量,所以我怎樣才能移動到一個數組? – helloworld1234

回答

0

事情是這樣的:

var class_1 = "some description.."; 
var class_2 = "some description.."; 
var class_3 = "some description.."; 
var class_4 = "some description.."; 
var class_5 = "some description.."; 

var class_100 = "some description.."; 

var classes = []; 
for(var i = 0; i < 100; i++){ 

classes.push(window['class_'+i]) 

} 
+0

感謝您的回答,它是JavaScript語法嗎?在SystemVerilog中如何? – helloworld1234

+0

@ helloworld1234您的原始發佈語法 - **是** SystemVerilog,或者它實際上是JavaScript? – aring

0

你有100個變量?你應該先排序出來

我認爲這個評論有一些事實。但是,爲了回答你的問題:假設你的變量遵循相同的命名約定,你上面的例子顯示,你可以指定用數組值的預定義變量,像這樣:

var a = [] 
for(var i = 0; i < num_vars; i++){ 
    var key = 'class_' + (i + 1) 
    if (this[key]) 
     a.push(this[key]) 
} 
0

您也許可以使用eval。是這樣的:

for (var i = 0; i < 100; i++) { 
    var toEval = "classes.push(class_" + i + ")"; 
    eval(toEval); 
} 
+0

這是在SystemVerilog語言? – helloworld1234

1

有SystemVerilog中沒有的方式來構建值的從獨立地命名的變量的列表,陣列,而不每個變量手動分配到數組的一個元素。

classes[0] = class_0; 
classes[1] = class_1; 
classes[2] = class_2; 
... 

事實上,用於變量名稱標識符有一個數字序列是無關緊要的,因爲你不能訪問除非確切的名稱標識符。
如果您想自動執行此操作,您需要更改字符串變量的定義方式。由於人們早已公佈,這應該使用數組開始,可能使用關聯數組被建模:

string classes[string]; 
classes["class_1"] = "some description.."; 
classes["class_2"] = "some description.."; 
classes["class_3"] = "some description.."; 

foreach(classes[name]) 
     // do something with classes[name] 

另一種選擇是使用SystemVerilog的類對象爲每個變量

class stringvar; 
    string m_name; 
    static stringvar list[$]; 
    function new(string name); 
    m_name = name; 
    list.push_back(this); 
    endfunction 
endclass 

stringvar class_0 = new("some description.."); 
stringvar class_1 = new("some description.."); 
stringvar class_2 = new("some description.."); 
... 
foreach(stringvar::list[item]) 
    // do something with item.m_name