如果我想编写一个接受varargs的函数并返回一个接受vargas的函数,我会遇到模糊不清...的问题
function bind(func, ...) return function(...) func(..., ...) end end
Run Code Online (Sandbox Code Playgroud) 每当我输入时我都意识到了
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缺少任何类似的内置多态性,但它也允许匿名结构.
任何人都可以找到有用的情况吗?
在执行过程中,我可以编写如下函数:
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
我对自己的能力不如我应该这么好,所以我想也许我可以#define做点什么.
不幸的是,当谈到预处理程序指令时,我非常缺乏经验,我无法弄清楚如何处理循环等问题.我在看:
但他们都没有for循环的例子.我想要的只是能够写出类似的东西,pwrtwo(5)而不是使用计算器来弄清楚2 5是32.
如果我有两个功能
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)