标签: func

如何让 Swift 循环无限期地(永远)运行?

我编写了一个函数,当前可以显示 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)

primes func ios swift

1
推荐指数
1
解决办法
1万
查看次数

如何调用此func代码段?

我在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)

不编译.

什么

谢谢

c# func

0
推荐指数
1
解决办法
289
查看次数

为什么以下静态功能不起作用?

这是我的代码:

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)

如何解决这个问题?

.net c# action func

0
推荐指数
1
解决办法
332
查看次数

有没有办法重构两个方法,一个调用等待方法,一个调用正常方法?

我正在为一个网站构建一个缓存服务,我想提供一个公共接口,它可以采用一个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)

c# functional-programming func async-await asp.net-mvc-4

0
推荐指数
1
解决办法
110
查看次数

如何在这里传递一个Func

假设我有一个像下面这样的课程.

public class Circle
{
    private double radius;
    public double GetArea(Func<double, double> operand)
    {
        return operand(radius);
    }
}
Run Code Online (Sandbox Code Playgroud)

我不知道如何在运行时传递Func来进行必要的计算

c# func

0
推荐指数
1
解决办法
87
查看次数

在IQueryable中执行函数

使用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中没有函数.

不起作用:

var db = new Order();
db.MyEntities.Where(x => x.Id > 50).Select(x => new SomethingElse(x.Name)).Take(10);
Run Code Online (Sandbox Code Playgroud)

是否存在,或者是否有可能为上述工作创造一种方式?

我理解它不起作用,因为它无法将函数转换为SQL可以理解的东西,但是,如果有一个名为'Execute'的扩展方法可以在执行所有linq之前和之后在内存中执行,那会起作用吗?

数据库将仅拉动> 50并且仅在TOP 10之后

var db = new Order();
db.MyEntities.Where(x => x.Id > 50).Execute(x => new SomethingElse(x.Name)).Take(10);
Run Code Online (Sandbox Code Playgroud)

澄清:要求是即使在Sleect()之后仍然保持IQueryable

c# entity-framework iqueryable func

0
推荐指数
1
解决办法
3121
查看次数

Textfield作为平均函数的输入

我最近想编写一个平均值计算器.我的计划是建立一个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)

你能用我的想法帮助我吗?有没有更好的方式来获得输入?

objective-c func ios swift

0
推荐指数
1
解决办法
99
查看次数

函数调用语法

我正在分析一个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没有任何参数,在这种情况下会发生什么?

c func

0
推荐指数
1
解决办法
123
查看次数

FUNC <>中的日期时间

我有这个:

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)

如何获得当前时间?

c# func

0
推荐指数
1
解决办法
597
查看次数

比c#中的Invoke匿名方法更清洁

这是编写此代码的更好方法吗?这种方式看起来很复杂.我想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)

.net c# anonymous-function func

0
推荐指数
1
解决办法
72
查看次数