[英]`self` can not use as arguments of a hy macro
下面的宏嘗試從 init 參數分配一個成員變量。
但
name 'self' is not defined
(defmacro optional_assign [x &optional [base self]]
`(lif ~x (setv (. ~base ~x) ~x) (setv (. ~base ~x ) None) ))
(defclass clsa []
(defn __init__ [self &optional y]
(optional_assign y)
))
(setv insa1 (clsa 123))
(print insa1.y) ;;=>123
(setv insa2 (clsa))
(print insa2.y) ;;=>None
默認參數像普通表達式一樣被評估,所以你想要[base 'self]
,而不是[base self]
。
此外,您在正文中第一次提到x
時缺少了一個~
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.