Рубиновый эквивалент C # оператора using - PullRequest
5 голосов
/ 03 декабря 2009

За последние несколько месяцев я попал в Ruby, но еще кое-что, что я еще не понял, - это то, что Ruby эквивалентно выражению C # (и другим языкам) using.

Я использовал оператор require для объявления своих зависимостей от Gems, но я становлюсь ленивым и предпочел бы не полностью квалифицировать мои часто используемые имена классов с их именем модуля (пространства имен).

Конечно, это возможно, верно? Я не должен использовать правильную терминологию, поскольку Google не дал мне ничего полезного.

Ответы [ 2 ]

6 голосов
/ 03 декабря 2009
>> Math::PI
=> 3.14159265358979
>> PI
NameError: uninitialized constant PI
    from (irb):3
>> include Math
=> Object
>> PI
=> 3.14159265358979

OTOH, если проблема заключается в псевдонимах имен классов, учтите, что, как говорится, « Класс - это объект, а Объект - это класс ».

Итак:

>> require 'csv'
>> r = CSV::Reader
>> r.parse 'what,ever' do |e| p e end
["what", "ever"]

Да, в Ruby имя класса - это просто ссылка, как и любая другая, на объект класса Class.

1 голос
/ 03 декабря 2009

Я не верю, что существует прямое синтаксическое отображение. Вы, вероятно, можете приблизить его, так как вы можете назначать ссылки на переменные практически всем, включая модули и классы.

module UsingExampleNamespace
    module SubExampleNamespace
        CON = "STANT"
    end
end

sen = UsingExampleNamespace::SubExampleNamespace
puts sen::CON
>> "STANT"
...