簡體   English   中英

Gosu 類 vs 增強

[英]Gosu class vs enhancement

我想知道 Gosu 類和增強之間的區別。 因為無論我們在增強中可以做什么,我們在 Gosu 類中也可以做的,那么 Gosu 增強的需要是什么。

Gosu 類就像一個 Java 類。 令您困惑的是增強功能。

增強是 OBJECT 的擴展屬性,可用於為其編寫的特定對象。

例如,假設我需要編寫一個函數來檢查輸入的數字是否大於 10。

所以使用 gosu 類,我們如何編寫代碼就像

Class MyInteger(){
    static funtion isNoGreaterThan10(no : int) : boolean{
      return (no > 10) 
    }
}

我們調用函數如下:

MyInteger.isNoGreaterThan10(34) //returns a boolean value

所以基本上,我們編寫的類和方法在我們的應用程序中的任何地方都可用。 這里是使用Enhancement

Enhancement MyInteger : int{
       funtion isNoGreaterThan10() : boolean{
          return (this > 10) //"this" represents the object upon which we are calling this enhancement
        }
}

上述增強僅適用於 Integer 對象。 並且此增強中的所有函數都成為任何整數對象的屬性。

var number = 14
number.isNoGreaterThan10() //return True

呼叫變得更簡單,例如

36.isNoGreaterThan10() //return True

"my_name".isNoGreaterThan10() // is not possible as "my_name" is not an integer.

同樣,讓我們​​看看字符串的增強(比如獲取字符串的長度)

Enhancement MyStringEnhancement : String {
  property get Length():int{
    return len(this)
  }
}

並且屬性 Length() 將可用於所有字符串對象。

"Hello boss".Length // returns 10

希望這可以幫助。

阿拉文 :)

在增強中,不允許定義任何變量(日志記錄無更改)。 因此,增強應該僅用於簡單的聚合計算。 增強的優點是新方法從實體中可見。 如果在 Gosu 類中定義,則必須知道類名。

找出不同之處如下。

區別如下

您可以將其視為對象的擴展屬性(在您希望執行的對象或屬性之上的微調操作)

暫無
暫無

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

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