簡體   English   中英

如何從Groovy中的類中訪問聲明的腳本字段?

[英]How to access declared script fields from within classes in Groovy?

假設我有下一個groovy代碼片段:

def weightArg = args[0]

class Box {

   def width

   def height  

   def double weight() {
       //I want to return the value of weightArg here. How can I do that? 
   }
}

我想讓我的班級Box從其環境中使用一些變量。 這樣做的正確方法是什么?

似乎weightArg應該是靜態的,我應該能夠從Box靜態初始化器中獲取它,但我無法克服編譯器。

在腳本中間聲明一個類並使其依賴於腳本局部變量是一個糟糕設計的明確標志。 如果你不能以OO方式設計整個系統而不是堅持程序編程。 編寫OO程序的主要目的是將它們分解為很少的獨立部分。 在你的情況下,它既不是因素也不是獨立的,我很確定它沒有用語言表達的目的。

換句話說,要么根本不聲明Box類型,要么以這種方式類似:

class Box {
  Box(weight) { this.weight = weight }
  def width, height, weight
}

並像這樣使用它:

def box = new Box(args[0])

因此,您可以從weightArgargs[0]抽象出來,並且能夠在不同的場景中重用它。

否則你會把你的程序弄得無法管理,因此在第一次修改后死了。 幾十年來,OO編程已經證明了這一點。

另外需要注意的是,當您感覺需要在腳本中引入類時,可以確定您的程序應該是作為包含包和內容的普通應用程序編寫的 - 而不是腳本。

無論這樣做是否“正確”,您可以從Box類中訪問權重變量的方法是簡單地刪除單詞“def”。 這里描述原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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