Re: [問題] 想請問一個關於"參數傳遞"的問題
※ 引述《ofspring (青春無敵)》之銘言:
: Sub (x,y,z)
: {x = y + z;
: y = z - x}
: main()
: {a=1; b=2; c=3
: call Sub (a, b, a+c);
: print(a, b, c);}
: Q3: 若參數傳遞的方式是 call-by-name,輸出結果為何?
: A3: (6, -2, 3)
我覺得 call by name 字義就是"用參數名字去叫函數執行"
實際作法就是先把函數內對應的變數名字全換過,然後,執行到那一行時才求值.
Sub (a, b, a+c) 第三個參數要看成一個名字,這參數名叫 a+c
Sub (a, b, a+c) = { a = b + a+c; b = a+c - a }
= { a = 2 + 1+3; b = a+c - a }
任何位置出現 a+c, 都應該要找 a=1, c=3. 而單獨存在的 a, 值受前一行程式
影響, 所以
= { a = 6; b = a+c - a }
= { a = 6; b = 1+3 - 6 }
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.231.65.21
※ 編輯: yauhh 來自: 61.231.65.21 (01/01 03:31)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 4 篇):
PLT 近期熱門文章
PTT數位生活區 即時熱門文章