我已将其分解为以下最小示例,并且想知道该效果是否是由于函数链接造成的。
// Interesting Part
some_string := "Some_String"
var fn3 StringManipulator = ident
fn3 = AppendDecorator(" GOLANG", ToLower(PrependDecorator("DECORATED ", fn3)))
fmt.Println(fn3(some_string))
// Prints "DECORATED some_string golang"
// Function Definitions
func ToLower(m StringManipulator) StringManipulator {
return func(s string) string {
lower := strings.ToLower(s)
return m(lower)
}
}
func AppendDecorator(x string, m StringManipulator) StringManipulator {
return func(s string) string {
return m(s + x)
}
}
func PrependDecorator(x string, m StringManipulator) StringManipulator {
return func(s string) string {
return m(x + s)
}
}
如代码中所述,这会产生“DECORATED some_string golang”,表明函数是从左到右执行的,而普通函数是从最内层到最外层计算的,即从右到左。[这让我想起了变换矩阵的后乘——顺序也被“颠倒”了,即 M_1 * M_2 * M_3] 这是由于函数链接还是什么原因?有人可以帮助我详细了解这是如何执行的吗?
小唯快跑啊
相关分类