我理解如何使用委托,我可以使用lambda表达式来使用谓词.我已经到了一个点,我想实现一个使用谓词作为参数的方法,并且无法弄清楚如何引用谓词来查找我的集合中的匹配:
private static T FindInCollection<T>(ICollection<T> collection, Predicate<T> match)
{
foreach (T item in collection)
{
//So how do I reference match to return the matching item?
}
return default(T);
}
Run Code Online (Sandbox Code Playgroud)
我想用类似的东西来引用它:
ICollection<MyTestClass> receivedList = //Some list I've received from somewhere else
MyTestClass UsefulItem = FindInCollection<MyTestClass>(receivedList, i => i.SomeField = "TheMatchingData");
Run Code Online (Sandbox Code Playgroud)
如果有人可以给我一个解释或指出我关于谓词实现的参考,我会很感激.那里的文档似乎都与传递谓词(我可以做得很好)有关,而不是实际实现使用它们的功能......
谢谢
我有一个类,用查询字符串参数构建一个URL,依此类推.该类有一个方法:Url()返回由类属性和另一个方法组成的完整url:UrlNew()允许传递谓词作为参数替换其中一个属性的值,然后返回修改后的URL .现在,我需要修改此函数以使用两个谓词的两个参数.我怎么做?我尝试将方法的参数修改为谓词列表,但我可能没有做正确的事情:
我的OLD UrlNew()方法看起来像这样:
public static string Url() (Action<LGUrlBuilder> predicate)
{
var instance = new LGUrlBuilder();
if (predicate != null) predicate(instance);
return instance.BuildUrl();
}
Run Code Online (Sandbox Code Playgroud)
我的新UrlNew()方法如下所示:
public static string UrlNew(List<Action<LGUrlBuilder>> predicateList)
{
var instance = new LGUrlBuilder();
if (predicateList != null && predicateList.Count > 0)
{
foreach (Action<LGUrlBuilder> predicate in predicateList)
{
if (predicate != null) predicate(instance);
}
}
return instance.BuildUrl();
}
Run Code Online (Sandbox Code Playgroud)
编译得很好但是当我运行它时,在ASPX中使用它会给我这个错误:
CS1660: Cannot convert lambda expression to type 'System.Collections.Generic.List<System.Action<public_site.Library.LG.LGUrlBuilder>>' because it is not a delegate type
Run Code Online (Sandbox Code Playgroud)
我是C#初学者,我确信我做的事情完全错了.任何建议都会有帮助.谢谢!
我有一个类型的对象列表A.每个对象都有一个Name属性.我有一个类型的对象B,也有一个Name属性,我想用它B.Name来匹配List<A>具有相同名称的对象.
这可能List.Where与自定义谓词一起使用吗?
有人可以向我解释stl算法中的pred字段是如何使用的?
谢谢
我正在尝试完成表达式功能替代方案
private static Expression<Func<UserProfile, bool>> CompareFilter(FilterViewModel f)
{
...
}
Run Code Online (Sandbox Code Playgroud)
在这一个:
private static bool CompareFilter(UserProfile profile, FilterViewModel filter)
{
if (filter.FirstName != null)
{
if (profile.FirstName != null)
{
if (profile.FirstName.CompareTo(filter.FirstName) != 0)
{
return false;
}
}
else
{
return false;
}
}
if (filter.TownId != null)
{
if (profile.TownId != filter.TownId)
{
return false;
}
}
// true if at least one of the filter interests match
if (filter.InterestsIds != null)
{
var firstInterestFound = profile.Interests
.Where(i => …Run Code Online (Sandbox Code Playgroud) 我在Swift中有一个数组(items)和一个字典数组(数据):
let items = [2, 6, 4]
var data = [
["id": "1", "title": "Leslie", "color": "brown"],
["id": "8", "title": "Mary", "color": "red"],
["id": "6", "title": "Joe", "color": "blue"],
["id": "2", "title": "Paul", "color": "gray"],
["id": "5", "title": "Stephanie", "color": "pink"],
["id": "9", "title": "Steve", "color": "purple"],
["id": "3", "title": "Doug", "color": "violet"],
["id": "4", "title": "Ken", "color": "white"],
["id": "7", "title": "Annie", "color": "black"]
]
Run Code Online (Sandbox Code Playgroud)
我想创建一个包含字典数组的数组,其"id"等于'items'数组中提供的数字.阿卡我想最终得到一个阵列:
var result = [
["id": "6", "title": "Joe", "color": "blue"],
["id": "2", "title": …Run Code Online (Sandbox Code Playgroud) 如果谓词失败,如何替换值?
为了显示:
assert_eq!((3-5).but_if(|v| v < 0).then(0), 0)
Run Code Online (Sandbox Code Playgroud)
我以为会有一些东西Option或Result允许这个,但我找不到它.
我尝试使用lambda表达式从列表中删除项目,但removeIf生成异常,为什么?
在这个Orlacle视频jdk8 8 MOOC介绍removeif与列表而不是arraylist.这样对吗 ?https://youtu.be/olKF7VpJMfg?list=PLMod1hYiIvSZL1xclvHcsV2dMiminf19x&t=137
public static void main(String[] args){
List<String> parole = Arrays.asList("Lambda ", "expressions ", "are ", "cool ");
Predicate <String> findAre= s->"are ".equals(s);
parole.removeIf(findAre);
parole.forEach( System.out::println);
}
Run Code Online (Sandbox Code Playgroud)
我希望在Scheme中创建一个函数,它接受一个谓词和一个元素列表,然后输出两个单独的列表.一个具有匹配给定谓词的原始列表的元素,另一个具有与其不匹配的元素.
我现在所拥有的代码我认为应该隔离与谓词匹配的代码并输出它们的列表,但代码将无效.
(define tear
(lambda (pred xs)
(cond[(null? xs) '()]
[(list? (car xs))(cons((tear (pred (car xs)))(tear (pred (cdr xs)))))]
[(pred (car xs))(cons((car xs)(tear (pred (cdr xs)))))]
[else tear (pred (cdr xs))])))
(tear number? '(1 2 3 a b c))
Run Code Online (Sandbox Code Playgroud)
我的编译器产生的结果是:
tear: arity mismatch;
the expected number of arguments does not match the given number
expected: 2
given: 1
arguments...:
#f
context...:
/home/jdoodle.rkt:2:4: tear
Command exited with non-zero status 1
Run Code Online (Sandbox Code Playgroud)
您可以提供的任何帮助/信息将非常感谢.
我正在写一个代码,计算一个字符串中有多少个单词。如何使用je增加寄存器?
例如:
cmp a[bx+1],00h
je inc cx
Run Code Online (Sandbox Code Playgroud)