Класс Госу против улучшения

Я хочу знать разницу между классом Госу и улучшением. Потому что все, что мы можем сделать в улучшении, мы можем сделать и в классе Госу, тогда зачем нужно улучшение Госу.


person Deepak Malav    schedule 18.08.2018    source источник


Ответы (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

надеюсь это поможет.

Аравинд :)

person Aravind R Pillai    schedule 19.08.2018
comment
Итак, похоже на методы расширения в С#? - person muszeo; 24.01.2019

В расширении не разрешается определять какие-либо переменные (без изменений для ведения журнала). Таким образом, расширение следует использовать только для расчета простых агрегатов. Преимущество улучшения заключается в том, что новый метод виден из сущности. Если вы определяете класс Gosu, вы должны знать имя класса.

person Nguyen Minh Hoang    schedule 20.09.2018

Найдите здесь различия.

Разница здесь следующая

person Shivanandam    schedule 02.02.2019

Вы можете принять это как расширенные атрибуты объекта (операция точной настройки поверх объекта или свойства, которую вы хотите выполнить)

person Harikrishna Kandala    schedule 10.04.2020