gpt4 book ai didi

function - 如何自引用一个函数?

转载 作者:行者123 更新时间:2023-12-01 19:18:19 27 4
gpt4 key购买 nike

python中的以下代码:

def print_all(x):
print(x)
return print_all

允许调用 print_all(1)(2)print_all(1)(2)(3)(4)
编辑

python中的另一个例子:
def print_sums(x):
print(x)
def next_sum(y):
return print_sums(x+y)
return next_sum

print_sums(1)(3)(5)

映射到语法:
package main

import "fmt"

type printsumfunctype func(x int) printsumfunctype

func printSums(x int) printsumfunctype {
fmt.Println(x)
var nextSum func(y int) printsumfunctype
nextSum = func(y int) printsumfunctype {
return printSums(x + y)
}
return nextSum
}

func main() {
printSums(1)(2)(3)
}

在 GoLang 中,函数是一流的

1) 在 GoLang 中自引用函数的语法是什么?

2) 定义像 printsumfunctype 这样的类型的首选命名约定是什么? ?

最佳答案

您定义一个递归函数类型:

type Printer func(interface{}) Printer

func printAll(x interface{}) Printer {
fmt.Println(x)
return printAll
}

func main() {
printAll(1)("Hello")
}

对于新代码,您将编写
type Sink func(int) Sink // not really different, is it?

func printSums(x int) Sink {
fmt.Println(x)
return func(y int) Sink {
return printSums(x + y)
}
}

一个有用的命名约定是仅根据类型的功能命名。在这两种情况下, Printer (基本上是功能动词+“er”)有效。或者,更通用的术语 Sink也很合适,因为它是一个黑洞,你可以一直往里面倾倒元素。我认为没有任何规则。这些类型并不常见。只需选择一个描述性的名称。

关于function - 如何自引用一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61830637/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com