Я должен определить основной метод в своих рубиновых сценариях?

проверьте этот скрипт

https://jsfiddle.net/ponmudi/tqmya6ok/1/

class Animal {
    constructor(type){
        this.animalType = type;
    }
    getAnimalType(){
        console.log('this.animalType: ', this.animalType );
    }
}

let cat = new Animal('cat');

//by instance
document.getElementById('1').innerHTML = Object.getOwnPropertyNames(cat);

//by getting prototype from instance
document.getElementById('2').innerHTML = Object.getOwnPropertyNames(Object.getPrototypeOf(cat));

//by prototype
document.getElementById('3').innerHTML = Object.getOwnPropertyNames(Animal.prototype);

47
задан MiniQuark 24 February 2009 в 17:29
поделиться

4 ответа

Я обычно использую

if __FILE__ == $0
  x = SweetClass.new(ARGV)
  x.run # or go, or whatever
end

Таким образом да, Вы можете. Это просто зависит от того, что Вы делаете.

76
ответ дан Allyn 7 November 2019 в 12:58
поделиться

Мое персональное эмпирическое правило: момент

if __FILE__ == $0
    <some code>
end

получает дольше, чем 5 строк, я извлекаю его к main функция. Это сохраняется и для Python и для кода Ruby. Без того кода просто выглядит плохо структурированным.

3
ответ дан Alexander Lebedev 7 November 2019 в 12:58
поделиться

Я всегда считал $ PROGRAM_NAME более читабельным, чем использование $ 0 . Половину времени, когда я вижу такие "Perl-подобные" глобалы, мне приходится искать их.


if __FILE__ == $PROGRAM_NAME
  # Put "main" code here
end
49
ответ дан 7 November 2019 в 12:58
поделиться

Нет.

, Почему добавляют дополнительный слой сложности ни для какой реальной выгоды? Нет никакой конвенции для Rubyists, который использует его.

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

-1
ответ дан Ian Terrell 7 November 2019 в 22:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: