簡體   English   中英

`self` 不能用作 hy 宏的 arguments

[英]`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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM