Я хочу знать разницу между классом Госу и улучшением. Потому что все, что мы можем сделать в улучшении, мы можем сделать и в классе Госу, тогда зачем нужно улучшение Госу.
Класс Госу против улучшения
Ответы (4)
Класс Gosu похож на класс Java. Что вас смущает, так это усиление.
Расширения — это расширенные свойства ОБЪЕКТА, доступные для конкретных объектов, для которых они написаны.
например, скажем, мне нужно написать функцию, чтобы проверить, больше ли введенное число 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, вы должны знать имя класса.
Вы можете принять это как расширенные атрибуты объекта (операция точной настройки поверх объекта или свойства, которую вы хотите выполнить)