我编写了一个函数,当前可以显示 1000 以下的所有素数。
我可以继续增大 1000 来生成更多数字,但我不知道如何让它在运行后永远持续下去。
func generatePrimes() {
let numbers = 2...1000
for n in numbers {
var prime = true
for i in 2..<n {
if n % i == 0 {
prime = false
break
}
}
if prime == true {
print(n)
}
}
}
Run Code Online (Sandbox Code Playgroud) 我在monad上看这篇文章:
http://blogs.msdn.com/b/wesdyer/archive/2008/01/11/the-marvels-of-monads.aspx
我在我的VS2010副本中编写代码,但是对于以下代码:
public static Func<T, V> Compose<T, U, V>(this Func<U, V> f, Func<T, U> g)
{
return x => f(g(x));
}
Run Code Online (Sandbox Code Playgroud)
我怎么称呼这个?
此外,文章指出:
函数组合采用两个函数,并将第二个函数的结果输入到第一个函数的输入中,从而形成一个函数.
这不仅仅是管道吗?
代码示例:
var r = f.Compose(g)(x);
Run Code Online (Sandbox Code Playgroud)
不编译.
什么
谢谢
这是我的代码:
public static class s {
public static int Dx(this int i, Action<int> act, Func<int, bool> con) {
if (con(i)) act(i);
return i;
}
}
Run Code Online (Sandbox Code Playgroud)
后来在我的代码中我做了:
int g = 22;
int false_con = g.Dx(j => j = 11, z => z != 22); // This is 22 which is fine.
int true_con = g.Dx(j => j = 11, z => z == 22); //This is also 22 which should be 11
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题?
我正在为一个网站构建一个缓存服务,我想提供一个公共接口,它可以采用一个Func<TKey,TValue>或Func<TKey,Task<TValue>>一个可以被服务调用的方法来缓存未命中.
我最终在处理这两个委托类型时重复代码.有没有办法巩固?我特别担心'Func'方法不是线程安全的,并且不适合包装在'Task.Run'中.
这是我的代码:
public interface ICacheServiceEngine
{
Task<CacheResult<TValue>> TryGetValueAsync<TValue>(string key);
Task<CacheResult<TValue>>
TryGetValueAsync<TKey,TValue>(TKey key, Func<TKey,string> keyFunc);
Task<TValue> GetValueAsync<TValue>(string key,
Func<string, TValue> valueSourceFunc);
Task<TValue> GetValueAsync<TKey,TValue>(TKey key,
Func<TKey,string> keyFunc, Func<TKey, TValue> valueSourceFunc);
Task<TValue> GetValueAsync<TValue>(string key,
Func<string, Task<TValue>> valueSourceFuncAsync);
Task<TValue> GetValueAsync<TKey, TValue>(TKey key,
Func<TKey,string> keyFunc, Func<TKey, Task<TValue>> valueSourceFuncAsync);
}
public interface ICacheServiceDataAccessor
{
Task<CacheResult<TValue>> TryGetAsync<TValue>(string key);
Task PutAsync<TValue>(string key , TValue result);
}
public class CacheServiceEngine : ICacheServiceEngine
{
private ICacheServiceDataAccessor cacheDataAccessor;
public CacheServiceEngine(ICacheServiceDataAccessor cacheDataAccessor)
{
// add guard
this.cacheDataAccessor …Run Code Online (Sandbox Code Playgroud) 假设我有一个像下面这样的课程.
public class Circle
{
private double radius;
public double GetArea(Func<double, double> operand)
{
return operand(radius);
}
}
Run Code Online (Sandbox Code Playgroud)
我不知道如何在运行时传递Func来进行必要的计算
使用Linq,很容易执行一个函数来投影IEnumerable.
var orders = new List<Order>();
orders.Where(x => x.Id > 50).Select(x => new SomethingElse(x.Name));
Run Code Online (Sandbox Code Playgroud)
使用EntityFramework和IQueryable,这是不可能的.而是在运行时获得不受支持的异常,因为您在Select中没有函数.
不起作用:
Run Code Online (Sandbox Code Playgroud)var db = new Order(); db.MyEntities.Where(x => x.Id > 50).Select(x => new SomethingElse(x.Name)).Take(10);
是否存在,或者是否有可能为上述工作创造一种方式?
我理解它不起作用,因为它无法将函数转换为SQL可以理解的东西,但是,如果有一个名为'Execute'的扩展方法可以在执行所有linq之前和之后在内存中执行,那会起作用吗?
数据库将仅拉动> 50并且仅在TOP 10之后
Run Code Online (Sandbox Code Playgroud)var db = new Order(); db.MyEntities.Where(x => x.Id > 50).Execute(x => new SomethingElse(x.Name)).Take(10);
澄清:要求是即使在Sleect()之后仍然保持IQueryable
我最近想编写一个平均值计算器.我的计划是建立一个UITextField你可以输入逗号分隔的数字......按下"计算"按钮,应用程序应该计算上面的数字平均值,并通过将labeltext设置为平均值来给出它们.所以我写了我的平均函数并收到了这条错误信息:
无法将"UITextField"类型的值转换为预期的元素类型"Double".
这是我的代码:
@IBOutlet var Input: UITextField!
@IBOutlet var Output: UILabel!
@IBAction func Calculate(sender: AnyObject) {
var grades:[Double] = [Input]
func average(nums: [Double]) -> Double {
var total = 0.0
for grade in nums{
total += Double(grade)
}
let gradesTotal = Double(nums.count)
let average = total/gradesTotal
return average
}
let Average = average(grades)
Output.text = "Average: \(Average)"
}
Run Code Online (Sandbox Code Playgroud)
你能用我的想法帮助我吗?有没有更好的方式来获得输入?
我正在分析一个C程序,我发现这里有一个奇怪的函数调用函数定义:
static void endSignal (int32_t dummy)
{
if (nTerminating) return;
nTerminating=1;
printf("terminating....\n");
terminateDLNAsystem();
sleep(1);
exit (0);
}
Run Code Online (Sandbox Code Playgroud)
该函数采用int32_t参数!现在这个调用"endSignal"的主函数
int32_t main (int32_t argc, char **argv)
{
/*Statements
.
.
*/
signal(SIGINT, endSignal);
signal(SIGABRT, endSignal);
signal(SIGQUIT, endSignal);
signal(SIGTERM, endSignal);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
主函数调用endSignal没有任何参数,在这种情况下会发生什么?
我有这个:
Func<DateTime> getDateTime = () => DateTime.Now;
Console.WriteLine(getDateTime);
Run Code Online (Sandbox Code Playgroud)
但作为输出我得到这个:
System.Func`1[System.DateTime]
Run Code Online (Sandbox Code Playgroud)
如何获得当前时间?
这是编写此代码的更好方法吗?这种方式看起来很复杂.我想example根据需要分配值anotherVariable.
var example = new Func<DateTime>((() =>
{
switch (anotherVariable)
{
case "Jesus birth": return new DateTime(0, 12, 24);
case "Second condition": return new DateTime(2017, 23, 11);
// etc
default: return DateTime.Now;
}
})).Invoke();
Run Code Online (Sandbox Code Playgroud) func ×10
c# ×7
.net ×2
ios ×2
swift ×2
action ×1
async-await ×1
c ×1
iqueryable ×1
objective-c ×1
primes ×1