Вероятно, проще всего сохранить все, что вы хотите (что говорит пользователь, любые его части и т. Д.) В параметре context из вашего webhook. Это будет распространяться на все раунды вашего разговора, пока счетчик продолжительности жизни в контексте не уменьшается до 0. Вы можете обновлять этот параметр контекста каждый раунд через ваш веб-крюк выполнения.
Предикат является функцией, которая возвращается true
или false
. Делегат предиката является ссылкой на предикат.
, Таким образом, в основном делегат предиката является ссылкой на функцию, которая возвращается true
или false
. Предикаты очень полезны для фильтрации списка значений - вот пример.
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<int> list = new List<int> { 1, 2, 3 };
Predicate<int> predicate = new Predicate<int>(greaterThanTwo);
List<int> newList = list.FindAll(predicate);
}
static bool greaterThanTwo(int arg)
{
return arg > 2;
}
}
Теперь при использовании C# 3, можно использовать лямбду для представления предиката более чистым способом:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<int> list = new List<int> { 1, 2, 3 };
List<int> newList = list.FindAll(i => i > 2);
}
}
Вовлекая из ответа Andrew относительно c#2 и c#3..., можно также сделать их встроенный для того от поисковой функции (см. ниже).
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<int> list = new List<int> { 1, 2, 3 };
List<int> newList = list.FindAll(delegate(int arg)
{
return arg> 2;
});
}
}
Hope это помогает.
Просто делегат, который возвращает булевскую переменную. Это используется много в фильтрации списков, но может использоваться везде, где Вы хотели бы.
List<DateRangeClass> myList = new List<DateRangeClass<GetSomeDateRangeArrayToPopulate);
myList.FindAll(x => (x.StartTime <= minDateToReturn && x.EndTime >= maxDateToReturn):
Существует хорошая статья о предикатах здесь , хотя это с.NET2 эры, таким образом, нет никакого упоминания о лямбда-выражениях там.
Просто-> они обеспечивают Истинные/Ложные значения на основе условия, главным образом используемого для запросов. главным образом используемый с делегатами
полагают, что пример списка
List<Program> blabla= new List<Program>();
blabla.Add(new Program("shubham", 1));
blabla.Add(new Program("google", 3));
blabla.Add(new Program("world",5));
blabla.Add(new Program("hello", 5));
blabla.Add(new Program("bye", 2));
содержит имена и возрасты. Теперь скажите, что мы хотим найти имена при условии, Таким образом, я буду использовать,
Predicate<Program> test = delegate (Program p) { return p.age > 3; };
List<Program> matches = blabla.FindAll(test);
Action<Program> print = Console.WriteLine;
matches.ForEach(print);
пытался Сохранить это Простым!
Если вы используете VB 9 (VS2008), предикат может быть сложной функцией:
Dim list As New List(Of Integer)(New Integer() {1, 2, 3})
Dim newList = list.FindAll(AddressOf GreaterThanTwo)
...
Function GreaterThanTwo(ByVal item As Integer) As Boolean
'do some work'
Return item > 2
End Function
Или вы можете записать свой предикат как лямбду, если это только одно выражение:
Dim list As New List(Of Integer)(New Integer() {1, 2, 3})
Dim newList = list.FindAll(Function(item) item > 2)