2015-09-30 63 views
6

Rust語言是否有辦法將一個函數應用於數組/矢量中的每個元素。我知道在Python中有執行此任務的map()函數。在R中有lapply(),tapply()apply()函數也可以做到這一點。我想知道是否有一種確定的方法來在Rust中矢量化一個函數?Rust是否有辦法將一個函數/方法應用於數組或向量中的每個元素?

+1

這裏你去:https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.map你可以像這樣使用它:'vec![1,2,3] .into_iter ().map(| x | x * 2).collect :: >()' – Adrian

回答

12

這裏有一個幾個細節:

我們確實有地圖,這對迭代器的工作原理。所以你可以:

some_vec.iter().map(|x| { }) 

但是,迭代器是懶惰的,所以這不會做任何事情。如果這就是你想要的,你可以將.collect()添加到最後以創建一個新的元素。

標準的方式做一些未分配是使用一個for循環:

for i in &vec { 

如果你真的想要的功能的風格,你可以在迭代工具箱使用FORALL方法。

+0

說史蒂夫,我只是想知道迭代器/收集方法與'for'循環之間是否存在性能差異。我知道在Python中,循環,列表解析和'map()'函數之間存在重要的性能差異。對於像這樣的問題Rust是否有任何性能指南 - 主要是數字計算? – krishnab

+1

for循環是Rust中迭代器的糖:http://doc.rust-lang.org/stable/std/iter/index.html#rust%27s-for-loop所以不應該是:) –

相關問題