2013-01-21 127 views
2

我已經閱讀了幾個示例代碼,但我不明白如何使用foreach-like循環遍歷文件集合。這裏是我如何得到文件列表:列出每個循環使用的目錄中的文件

ls=:0 dir '*.*' 

我可以迴應這一點,它工作正常。但我需要做的是使用某種循環一次處理每個文件1。所以像:

ls=:0 dir '*.*' 
foreach (file in ls) { 
do something(file) 
do something else.. so on 
} 
手冊中

每個循環應該是這樣的:

smoutput each i.10 

顯然,這是沒有用的,它輸出1到10,我不知道如何修改此與我的目錄列表一起工作。

回答

2

each關鍵字用於單線循環。有一個for loop,您可以在定義的函數(或動詞)中使用它。

實施例:

myFunction =: 3 : 0 
    ls =. 1 dir '*.*' 
    for_file. ls do. 
     doSomething ;file 
     doSomethingElse ;file 
    end. 
) 

for_.的變體可以說是最有用的。變量file的名稱在下劃線和句點之間。需要記住的重要一點是,for循環會將每個項目顯示在數組中,因此如果ls是一個盒裝字符串數組,則每個file都將顯示爲一個盒裝字符串。

+0

它在說 「拼寫錯誤for_file。LS做的。」 – ace007

+0

@ ace007這是必須進入一個函數。您無法直接在提示中輸入。我會編輯。另外請注意'1 dir'會更容易通過。 – MPelletier

+0

好吧,它有點作品,但列出前2個文件後,我得到一個「語法錯誤:myFunction | myFunction 0」我是否正確調用該函數,我也稱它爲myFunction'' – ace007

0

你可能需要這種形式的列表:

ls =: 1 dir '*.*' 

這是文件的列表不喜歡0 dir '*.*'字符的列表。

您可以在此列表中使用each,例如:

]ls =: 1 dir '*' 
┌──────────┬──────────────┬──────────┬───────────┬───────┐ 
│build_defs│build_jconsole│build_libj│build_tsdll│jconfig│ 
└──────────┴──────────────┴──────────┴───────────┴───────┘ 

;# each ls NB. number of characters for each filename 
10 14 10 11 7 
相關問題