不太清楚要怎麼理解這個地方
来源:7-1 函数式编程

ZoneTw
2020-04-07
type iAdder func(int) (int, iAdder)
在類型定義裡面又去使用本身這個類型, 有點像是雞生蛋蛋生雞的那種感覺:
iAdder 這個類型是一個接收 int 後回傳一個 int 和 iAdder 類型的函式
然後一直不清楚 iAdder 這個類型的完整樣貌到底是長甚麼樣子
可能我有點鑽牛角尖, 不過遇到這種地方我會想要知道怎樣去理解, 不然這種用法我可能要用背的才能用得出來
另外可以請老師給我一點建議嗎? 在學程式的時候鑽牛角尖的處理方向
感覺不去理解深入一點, 用起來怕會有問題
但是太深入, 學習速度感覺又很慢, 或者說卡在現階段不需要關注的地方
2回答
-
我给你个建议,就是如果你像我一样每次看到老师在写函数式风格的代码时脑子都有点迟钝的话,那就直接无视,往后看就行,看到其他不太懂的也往后看,没必要钻牛角尖也尽量别卡住,就像学学校的专业课一样一学期下来听懂了70%,考试一周后只剩30%,过了一年只剩5%了,不过至少你还记得大约自己学过啥东西,以后有用到可以捡起来
122020-04-08 -
ccmouse
2020-04-08
这个所谓“正统”的函数式编程连变量都不能有,只能有函数。
这里只是做一个演示,说go语言也做得到,但一般go语言不会这么写。不理解没关系,我也有考虑把这段去掉的想法。
这里就是一个递归的定义,没有“完整樣貌“这样的说法。其实之前我们第四章的TreeNode也是一个递归的定义,也同样没有“完整样貌”。只是TreeNode那样的写法我们见得多了,所以不觉得奇怪。
不过对于到底是什么,我试图说一下:
函数我们也说是闭包,它里面有两样东西,一个函数指针,也就是函数的入口地址,是死的。还有一部分是数据,其实是对所有被“包括”在闭包里面的数据的指针。我用结构体来模拟了一下这个例子,希望能有所帮助 https://play.studygolang.com/p/avCKODNLtWe
对于卡住的问题,我的建议是发现卡住以后,给自己定一个时间,多久解决不了就问人,再多久解决不了就放弃。这个时间一般都是在一个小时到数小时之间,不建议有问题卡过夜,第二天可能会有新的思路。
132021-11-09
相似问题