我在大学时使用IDL和MatLab,现在我已经工作了几年,我想念:索引数组的符号.例如
arrray[1:5]
Run Code Online (Sandbox Code Playgroud)
这将从1到5的元素返回一个数组.另一个例子是:
stringVar.Split(")".ToCharArray())[1:*]
Run Code Online (Sandbox Code Playgroud)
这将返回跳过第一个元素的字符串数组.
有没有人看过鞋角的方法:用C#表示?
我在一些解释语言和Perl或Python中看到它,不记得了.
我想知道这是否可以通过一些运算符覆盖来完成?
目前尚未在BCL中实施.添加此功能的最佳方法是通过扩展方法.例如,这是一个快速而肮脏的例子(不完整的特色).
public static IEnumerable<T> GetRange<T>(this IEnumerable<T> enumerable, string range) {
var arr = range.Split(':');
var start = Int32.Parse(arr[0]);
if ( arr[1] == "*" ) {
return enmuerable.Skip(start);
} else {
var end = Int32.Parse(arr[1]);
return enumerable.Skip(start).Take(end-start);
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以做到
strVar.GetRange("1:*"); // Skip first element take rest
strVar.GetRange("1:5"); // Skip first element next 5
Run Code Online (Sandbox Code Playgroud)
注意:我根本不熟悉Matlab语法,因此我不确定是否将其实现为正确的规范,但希望它能得到一般的想法.
| 归档时间: |
|
| 查看次数: |
244 次 |
| 最近记录: |