子程序中的這條線是什麼意思?
shift->{o} = $o;
我知道平時做了什麼樣的轉變,但是在這種情況下,不知道它是用短劃線還是箭頭。
子程序中的這條線是什麼意思?
shift->{o} = $o;
我知道平時做了什麼樣的轉變,但是在這種情況下,不知道它是用短劃線還是箭頭。
將值轉換爲hashref併爲該散列中的'o'鍵賦值。
內子/方法,
shift
是短期的
shift(@_)
一個子調用放置論點@_
。方法調用的作用相同,但是在調用者的參數前面。
如果它在一個被稱爲sub的子集中,它將$o
分配給第一個參數引用的散列的元素o
。
如果這是作爲方法調用的子集,它將$o
分配給調用者引用的哈希的元素o
。實際上,這設置了調用此方法的對象的屬性o
。
在此過程中,shift
從@_
中刪除了引用,儘管我懷疑這可能沒有任何意義。
@Borodin,首先我解釋了'shift',然後是'@ _',然後是' - >',這是沒有前向引用的唯一順序。你是否真的有建設性的批評意見?你像往常一樣拖着我嗎? – ikegami 2014-09-22 18:14:15
我希望你明白,解釋一切在眼前並不能提供有用的答案。我相信你已經看到代碼中的評論減少了可讀性的代碼?取消前向引用是針對計算機,而不是針對人:你讀過「呼嘯山莊」嗎?我相信你的回答如果在派生之前解釋更大的想法,可能會更有用。 'ysth'的答案几乎是所有必要的。 – Borodin 2014-09-22 18:27:54
@Boridin,我發現ysth的答案完全沒用。我不明白它是如何幫助OP的。他甚至沒有碰到片段中令人困惑的部分 – ikegami 2014-09-22 18:49:09
當您將值傳遞給子例程時,可以通過兩種方式獲取該值。
你可以使用班次。當傳遞一個值時。
如果你通過更多的價值。你可以通過數組獲得它...
shift - > {0}獲取傳遞參數到子例程的單個值(或)第一個值。
$ 0用於獲取程序的當前路徑。
'my $ self = shift @_; $ self - > {o} = $ o;' – 2014-09-21 16:43:27