Arrays

本頁面所適用的版本可能已經過時,最後更新於1.10

數組是《鋼鐵雄心IV》中用以存儲變量的方式,變量既可以是數字形式numerical data的,也可以是作用域scope data形式的。

數組在指令effects中發揮作用,並且觸發器trigger能夠從中讀取數據。指令既可以使數組迭代入其他指令,也能使其數據在自身內進行迭代。

以下,使用<>括起的內容為數據類型,等號左側的標識符為參數名稱

指令(Effects)

添加到數組(add_to_array)

add_to_array = {
    array = <name>
    value = <value>
    index = <index>
}

一旦將元素添加到數組中,就會創建一個數組。

array 是數組的名稱,也是指令和觸發器調用它的依據。

value 是指要加入數組的數據內容,它既可以是數字形式的(如1 或 var:my_num),也可以是作用域形式的(如GER 或 var:my_scope)。這些都是選填內容,如果不填,則會將當前作用域填入此處。

index 指數據內容應當被插入數組的哪個位置。缺省default data(現普遍稱默認)情況下,value會接續在數組最後。其他情況下,原有的數據會自動向後移位以適應插入。

這部分的簡便寫法是:add_to_array = { <name> = <value> }

從數組中移除(remove_from_array)

remove_from_array = {
	array = <name>
	value = <value>
	index = <index>
}

array 是將被移除數據的數組名稱。

value 是想要移除的數據內容。

index 指移除操作所選擇的開始位置。

如果value和index都未定義,那麼array只有最後一個元素會被移除。

這部分的簡便寫法是:remove_from_array = { <name> = <value> }

清空數組(clear_array)

clear_array = <name>

清空指定數組。

重置數組規模(resize_array)

resize_array = {
	array = <name>
	value = <value>
	size = <int>
}

重置特定數組array的規模(size)。

如果擴大現有數組的規模,多出來的新元素將被置為value;如果縮小現有數組的規模,則自index=size開始的元素將被丟棄。

這部分的簡便寫法是: resize_array = { <name> = <size> }

while循環指令(while_loop_effect)

while_loop_effect = {
	break = <string>
	limit = { <triggers> }
	
	<effects>
}

對指定數組進行有條件的循環操作。只要limit為真,就重複執行指令組(用花括號括起的指令集合)。

break接受一個臨時變量temp variable,當傳遞給break的變量取值為非0時,迭代將結束。缺省情況下,break接受的變量名為 break。break無法在本指令之外被訪問。

本指令接受指令組作為其參數,以指定對數組元素進行的操作。

該指令會隱性地將當前數組array作為參數。

for each循環指令(for_each_loop)

for_each_loop = {
	array = <name>
	value = <string>
	index = <string>
	break = <string>
	
	<effects>
}

對指定數組中的每個元素調用指令組。

value指定了一個臨時變量,指向迭代過程中的當前元素,缺省值為v

index指定了一個臨時變量,指向迭代過程中的當前位置,缺省值為i

break後應分配一個非零臨時變量以結束迭代,缺省值為break

在此循環中可以寫入指令執行某些操作,並隱性地以當前數組為參數

for each作用域循環指令(for_each_scope_loop)

for_each_scope_loop = {
	array = <name>
	break = <string>
	
	<effects>
}

對指定數組中的每個元素調用指令組,並且在每次調用時將當前作用域更改為當前元素。

break後應分配一個非零臨時變量以結束迭代,缺省值為break

在此循環中可以寫入指令執行某些操作,並隱性地以當前數組為參數

隨機作用域指令(random_scope_in_array)

random_scope_in_array = {
	array = <name>
	break = <string>
	limit = { <triggers> }
	
	<effects>
}

對特定的數組中的每一變量進行循環操作,並在每次迭代時將當前作用域改為隨機作用域(當前數組內的一個隨機的、不同於當前作用域的變量)。

break後應分配一個非零臨時變量以結束迭代,缺省值為break

在此循環中可以寫入指令執行某些操作,所用的數據內容應均在array內。

添加到臨時數組(add_to_temp_array)

add_to_array代碼相同,但存儲對象為臨時數組,此數組在腳本結束後就會消失。

從臨時數組中移除(remove_from_temp_array)

remove_from_array 代碼相同,但存儲對象為臨時數組,此數組在腳本結束後就會消失。

清空臨時數組(clear_temp_array)

clear_array 代碼相同,但存儲對象為臨時數組,此數組在腳本結束後就會消失。

重置臨時數組規模(resize_temp_array)

resize_array 代碼相同,但存儲對象為臨時數組,此數組在腳本結束後就會消失。

觸發器(Triggers)

包含關係(is_in_array)

is_in_array = {
	array = <name>
	value = <value>
}

檢測指定數組array是否含有指定元素value。

存在量詞(any_of)

any_of = {
	array = <name>
	value = <string>
	index = <string>
	
	<triggers>
}

對指定數組內的每一元素調用<triggers>並比較觸發器輸出和元素值。如果任一比較結果值為真則觸發器輸出為真,否則為假。

全稱量詞(all_of)

all_of = {
	array = <name>
	value = <string>
	index = <string>
	
	<triggers>
}

對指定數組內的每一元素調用<triggers>並比較觸發器輸出和元素值。如果任一比較結果值為假則觸發器輸出為假,否則為真。

作用域存在量詞(any_of_scopes)

any_of_scopes = {
	array = <name>
	
	<triggers>
}

對指定數組進行循環操作,將<triggers>與當前作用域進行比較,如果任一返回值為真則觸發器輸出為真,否則為假。

作用域全稱量詞(all_of_scopes)

all_of_scopes = {
	array = <name>
	
	<triggers>
}

對指定數組進行循環操作,將<triggers>與當前作用域進行比較,如果任一返回值為假則觸發器輸出為假,否則為真。

附加信息

你可以將某數組內變量的數目輸出出來,只需要這麼寫:set_variable = { var_name = array_name^num }

例子