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