[英]Return an array of strings of different length in Fortran
我想創建一個類型來包含 Fortran 中的字符串數組,而無需顯式分配長度,以便我可以從函數中返回它。
以下是我的類型:
type returnArr
Character (*), dimension(4) :: array
end type returnArr
以下是函數的簽名:
type(returnArr) FUNCTION process(arr, mean, stdDev) result(j)
以下是我嘗試設置結果的地方:
j%array(1)= "Test"
但我得到的只是以下錯誤:
Error: Character length of component ‘array’ needs to be a constant specification expression at (1)
如何聲明類型以便字符串可以具有不同的長度?
派生類型的字符組件可能具有顯式長度,也可能具有延遲長度。 后者是改變其值的方式(通過多種方式中的任何一種)。 還需要在派生類型的數組中允許不同長度的靈活性。
但是,使用len=*
不是說“延遲長度”(它是“假定長度”)的正確方法。 相反,您可以使用len=:
並使組件可分配(或指針):
type returnArr
Character (:), allocatable :: char
end type returnArr
那么一個人可能有一個returnArr
對象數組:
function process(arr, mean, stdDev) result(j)
type(returnArr) :: j(4)
end function
賦值如
j(1)%char = "Test"
然后依賴於組件char
自動分配。
請注意,現在函數結果是該容器類型的數組。 我們做不到
function process(arr, mean, stdDev) result(j)
character(:), allocatable :: j(:)
end function
並將j(1)
分配到與j(2)
不同的長度(等等)。
相似地
type returnArr
Character (:), allocatable :: char(:)
end type returnArr
不允許這些char
組件元素具有不同的長度。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.