小编Jul*_*ian的帖子

varags函数返回vargas lambdas lua

如果我想编写一个接受varargs的函数并返回一个接受vargas的函数,我会遇到模糊不清...的问题

    function bind(func, ...) return function(...)  func(..., ...) end end
Run Code Online (Sandbox Code Playgroud)

lambda lua scope variadic-functions

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

为什么匿名结构(非typedef'd)在c中有用?

每当我输入时我都意识到了

typedef struct {
//  ...
} foo;
Run Code Online (Sandbox Code Playgroud)

有一个匿名结构正在被typedef.我想不出有任何方法可以将匿名结构传递给函数,所以它似乎没用.
我能想到的唯一用途是像这样的c ++:

struct {
    char* name;
    int   age;
} alice;

void print_info(auto v) {
    printf("name: %s age: %i", v.name, v.age);
}

int main() {
    alice.name = "Alice";
    alice.age  = 24;
    print_info(alice);
}
Run Code Online (Sandbox Code Playgroud)

尽管c缺少任何类似的内置多态性,但它也允许匿名结构.

任何人都可以找到有用的情况吗?

c struct

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

Haskell中的纯Knuth / Fisher-Yates混洗

在执行过程中,我可以编写如下函数:

func pureFisherYates(s []int, swaps []int) []int {
    newS := copy(s)
    for i, _ := range newS {
            for _, j := range swaps {
                    newS[i], newS[j] = newS[j], newS[i]
            }
    }
}
Run Code Online (Sandbox Code Playgroud)

对我来说,这似乎是一个纯粹的功能。在给定相同输入的情况下,它总是返回相同的输出,并且不会改变世界的状态(严格意义上讲,它与其他任何函数都一样,占用cpu资源,产生热能,等等)。然而,每当我寻找如何进行纯随机转换时,我都会发现类似这样的东西,每当我寻找特定的Haskell实现Fisher-Yates时,我就可以0^2使用列表或[a] -> IO [a]实现来实现Fisher-Yates 。是否存在[a] -> [a] O(n)改组,如果没有,我的上述实现为何不正确。

algorithm haskell functional-programming shuffle purely-functional

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

C/C++两个宏的功能

我对自己的能力不如我应该这么好,所以我想也许我可以#define做点什么.

不幸的是,当谈到预处理程序指令时,我非常缺乏经验,我无法弄清楚如何处理循环等问题.我在看:

但他们都没有for循环的例子.我想要的只是能够写出类似的东西,pwrtwo(5)而不是使用计算器来弄清楚2 5是32.

c++ macros preprocessor-directive

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

制作一个指向两个函数c ++的std :: funtion

如果我有两个功能

void foo()
{
    std::cout << 1 << std::endl;
}

void bar()
{
    std::cout << 2 << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

我有一个函数指针

std::function<void()> v;
Run Code Online (Sandbox Code Playgroud)

我想要v()打印

1
2
Run Code Online (Sandbox Code Playgroud)

c++ std-function

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