我遇到过以下代码,无法理解双感叹号提供的操作。此代码snipet来自CICD系统中使用的FAKE脚本。 Microsoft's Symbol and Operator Reference未列出此运算符,也无法在FAKE's API Reference中找到它。
!! (projectPackagePath + "/*.zip")
|> Seq.iter(fun path ->
trace ("Removing " + path)
ShellExec tfCommand ("delete " + path + " /noprompt")
另一个使用示例
let buildLabelFiles =
!!(labelPath @@ "*.txt")
答案 0 :(得分:8)
private void SortByColumns(object sender, RoutedEventArgs e)
{
GridViewColumnHeader column = (sender as GridViewColumnHeader);
string sortBy = column.Tag.ToString();
if (listViewSortCol != null)
{
AdornerLayer.GetAdornerLayer(listViewSortCol).Remove(listViewSortAdorner);
siteListView.Items.SortDescriptions.Clear();
}
ListSortDirection newDir = ListSortDirection.Ascending;
if (listViewSortCol == column /*&& listViewSortAdorner.Direction == newDir*/)
newDir = ListSortDirection.Descending;
listViewSortCol = column;
listViewSortAdorner = new SortAdorner(listViewSortCol, newDir);
AdornerLayer.GetAdornerLayer(listViewSortCol).Add(listViewSortAdorner);
ListCollectionView lvi = CollectionViewSource.GetDefaultView(siteListView.ItemsSource) as ListCollectionView;
if (lvi != null)
{
lvi.CustomSort = new StringComparer<MyTuple>(sortBy, newDir);
}
else
siteListView.Items.SortDescriptions.Add(new SortDescription(sortBy, newDir));
}
运算符采用文件模式并返回与模式匹配的文件集合。
例如,如果要打印当前文件夹中的所有文本文件,可以写:
var isReal: Bool?
String("Value is \(isReal ?? "nil")")
如果您在源代码中查看the operator definition,您会发现它只是创建!!
值的别名(请参阅type definition),其中包含由指定的模式。 for file in !! "*.txt" do
printfn "%s" file
类型实现IGlobbingPattern
,因此您可以迭代文件,但您可以使用IGlobbingPattern
执行其他一些操作,例如使用IEnumerable
组合两个文件集或使用IGlobbingPattern
从文件集中删除一些文件。