请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

不太清楚要怎麼理解這個地方

type iAdder func(int) (int, iAdder)

在類型定義裡面又去使用本身這個類型, 有點像是雞生蛋蛋生雞的那種感覺:
iAdder 這個類型是一個接收 int 後回傳一個 int 和 iAdder 類型的函式
然後一直不清楚 iAdder 這個類型的完整樣貌到底是長甚麼樣子

可能我有點鑽牛角尖, 不過遇到這種地方我會想要知道怎樣去理解, 不然這種用法我可能要用背的才能用得出來

另外可以請老師給我一點建議嗎? 在學程式的時候鑽牛角尖的處理方向
感覺不去理解深入一點, 用起來怕會有問題
但是太深入, 學習速度感覺又很慢, 或者說卡在現階段不需要關注的地方

正在回答

2回答

我给你个建议,就是如果你像我一样每次看到老师在写函数式风格的代码时脑子都有点迟钝的话,那就直接无视,往后看就行,看到其他不太懂的也往后看,没必要钻牛角尖也尽量别卡住,就像学学校的专业课一样一学期下来听懂了70%,考试一周后只剩30%,过了一年只剩5%了,不过至少你还记得大约自己学过啥东西,以后有用到可以捡起来

1 回复 有任何疑惑可以回复我~
  • 提问者 ZoneTw #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2020-04-08 22:39:19
  • 提问者 ZoneTw #2
    我之所以會卡住, 是因為我以為這個關卡沒有突破的話, 後面也就無法繼續前進, 我以為地基不穩, 繼續往上蓋高樓可能也不會穩
    
    謝謝, 我用新的方式試試看
    回复 有任何疑惑可以回复我~ 2020-04-08 22:42:21
ccmouse 2020-04-08 21:12:12

这个所谓“正统”的函数式编程连变量都不能有,只能有函数。

这里只是做一个演示,说go语言也做得到,但一般go语言不会这么写。不理解没关系,我也有考虑把这段去掉的想法。

这里就是一个递归的定义,没有“完整樣貌“这样的说法。其实之前我们第四章的TreeNode也是一个递归的定义,也同样没有“完整样貌”。只是TreeNode那样的写法我们见得多了,所以不觉得奇怪。

不过对于到底是什么,我试图说一下:

函数我们也说是闭包,它里面有两样东西,一个函数指针,也就是函数的入口地址,是死的。还有一部分是数据,其实是对所有被“包括”在闭包里面的数据的指针。我用结构体来模拟了一下这个例子,希望能有所帮助 https://play.studygolang.com/p/avCKODNLtWe 

对于卡住的问题,我的建议是发现卡住以后,给自己定一个时间,多久解决不了就问人,再多久解决不了就放弃。这个时间一般都是在一个小时到数小时之间,不建议有问题卡过夜,第二天可能会有新的思路。


1 回复 有任何疑惑可以回复我~
  • 提问者 ZoneTw #1
    了解, 謝謝老師
    我想我發現自己卡住的地方在哪裡了:
    type 只是一個特徵或者行為的"描述"或者驗證的規則, 而不是一個實際的實體
    
    用 iAdder 這種 type 來說
    它的特徵就是傳入一個 int, 然後它會回傳一個 int + 跟它有一樣行為的函式; 後來產生的函式的行為和先前的一樣, 但是它跟原本的函式不是同一個函式
    
    雞是一種會生蛋的生物( 用 type 做行為特徵的描述)
    然後實際的情形是:
    雞A 會生出蛋A
    蛋A 會得到 蛋殼 B + 雞B
    以上是比較粗淺的解釋
    
    感謝老師特地抽空寫了範例,
    對於實際比較深入的實作細節就更清楚一些
    回复 有任何疑惑可以回复我~ 2020-05-05 07:37:59
  • 尼克2018 回复 提问者 ZoneTw #2
    你是港澳台同胞吗
    回复 有任何疑惑可以回复我~ 2021-01-07 22:49:18
  • 同问!
    回复 有任何疑惑可以回复我~ 2021-11-09 23:31:50
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信